Cross-compiling C++ OpenCV from Visual Studio 2013 on Windows to Ubuntu - c++

I've got a C++ VS2013 solution with 3 projects, using OpenCV 2.4.10, easylogging++ and Dlib libraries. The problem is that our client is now migrating to Linux (Ubuntu Server). I've looked into Cygwin and MinGW and a few questions here on stackoverflow, but I'm still lost as to where I should start. I need this done as soon as possible, so the simpler solution would be best. I really appreciate any help you can provide.

I recommend using cmake build system on ubuntu. Using Opencv and easylogging on ubuntu out of the box could be a matter of minutes. dlib's website also mentions a simple cmake building steps that works on ubuntu.
After you get your libraries up and running, build your code and see if there are any system-dependent functions then google how to standardize them across systems. If your code is already standardized it should run right then and there.
You can then ask about any specific issues you meet on the way.

Related

Cross compilation - V8 and Linux on Windows

I am trying to embed Google's V8 in my game engine. I'm targeting 3 operating systems: Windows, Linux and OS X.
I haven't had any problems with building for Windows - I used NuGet packages. But I'm trying to build V8 for Linux and the problem is - I'm doing this on Windows (Windows 10 if it matters).
Google doesn't exactly say how to compile V8 for Linux using Windows and now I'm really confused, as I have no idea. So far I have depot_tools, properly fetched v8 (using fetch command), Python and MinGW.
I've tried with v8gen.py, but it seems that it generates build files only for Visual Studio. As I said, I don't need VS files.
My question is: What should I do?
This is not possible out-of-the-box with the current build tools and configurations that V8 provides. As suggested in the comments, using a VM might be the quickest way to get this working for you.
If it is very important for you long-term, or for other developers as well, you could look at submitting patches to V8 to make this possible, but I don't have a good sense of how much work that would be.

Compiling cairo (cairomm) on Windows

I'm trying to compile cairo into a lib file using Mingw. I've downloaded the cairo, cairomm, and pixman source packages, but I can't figure out where to go from here. The INSTALL help file talks about a bunch of scripts that I can't seem to run or even find ('./configure', 'make', 'make install'). Googling the issue is bringing up nothing helpful.
I feel like this is a noobish question to ask. I've only recently started getting into the C++ side of programming (coming from Java/C#), and this is the first time I've had to compile an external library before using it. The shocking lack of explanations on the process makes me wonder if there was some chapter of a tutorial somewhere I was supposed to read that makes this whole process a complete no-brainer.
I think this project isn't supporting building with Mingw.
There are build instructions here for building with Visual Studio (which can be downloaded for free as the Visual Studio Express Edition from MS Website: http://www.visualstudio.com/en-US/products/visual-studio-express-vs
Build instructions here:
http://cairographics.org/end_to_end_build_for_win32/
It's probably possible to make this work for MingW, but you will have to make it work yourself, which may be a bit of a long step for someone who is new to compilers and build scripts in general.

Tesseract + OpenCV + linux

I have developed an OCR application on Windows using OpenCV and Tesseract. Now all I want to do is to write same application over Linux (Ubuntu 12.10) in C++. And I don't have any experience in Linux development. I don't know where to start. All I want is developing environment in which I would able to link these two libraries OpenCV and Tesseract.
Please suggest me. I have tried searching Google but failed. Maybe I am not searching with good keywords. As I am totally new in Linux
First make sure that you compiled OpenCV on your system, as OpenCV's linux bundle hasn't got pre-compiled libs (unlike Windows bundle). Follow this tutorial.
For a starting point, build up Eclipse as IDE and follow this tutorial. It shouldn't be so hard to adopt if you already used Visual Studio (MSVC Windows compiler).
Later on, it would be wise to learn about gcc (official linux compiler for your c++ code) and its syntax, and maybe together with CMake. Because learning the terminal and g++ syntax suddenly accelerates the development process. Linux has got many opportunities for a developer, such as pkg-config, which links all the libs and headers automatically (well, almost). You can also go for learning CMake for cross platform development and let it use "gcc" by default; example here.
Also note that, using cygwin, you can actually compile & build linux binaries on a Windows platform. For the opposite; check MinGW.
Good luck.
EDIT: other cross platform solutions
VisualGDB
Qt

Win7 / Eclipse / OpenCV / MinGW: Application crashes everytime it starts

After big struggle with me and OpenCV I finally found this tutorial:
OpenCV with MinGW on Eclipse Tutorial (Scroll to "OpenCV - with CMake & MinGW")
I did everything as it has been written, but everytime I try to launch application it stops to respond just after few seconds and Windows alert communicate is shown. I noticed, that I can freely run standard C++ programs and include headfiles, but after single line of OpenCV code it fails to work properly. Also there is no information about error.
why don't you try the official tutorial http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html#linux-eclipse-usage
this is the official site in opencv documentation which should get you started, it includes tutorials to get you started on lots of other platforms
http://docs.opencv.org/doc/tutorials/introduction/table_of_content_introduction/table_of_content_introduction.html#table-of-content-introduction
I also had a touch time getting OpenCV running but finally I found something that worked (I use Qt Creator as my IDE, not Eclipse, but maybe the problem and solution is similar).
At first I tried to download OpenCV 2.4.8, but I found it didn't include any MinGW binaries. I followed a forum on the web and installed CMake, but it seemed like OpenCV 2.4.8 didn't contain the CMake target for MinGW. After reading some more forums, I downloaded OpenCV 2.4.3 and was able to use CMake along with MinGW 4.8 (version that came with Qt 5.2) to build OpenCV. This got me to a point where I could compile my programs and attempt to run them. Some of the pure c commands even worked like cvLoadImage, but any of the c++ commands like imread or Mat::zeros(3,3, CV_8UC1) would cause a crash.
I tried building openCV a few more times with different options. Some sites suggested turning off SSE and SSE2 or building the debug version, but none of this worked for me.
Finally I ended up downloading TDM-GCC-32. I downloaded the on demand installer and made sure to get the dw2 version of the compiler (since a while ago I spent some time dealing with dw2 vs sjlj incompatibilities). Finally I rebuilt OpenCV with the TDM-GCC and also set TDM-GCC as the compiler in Qt Creator. This ended up being the fix.
I think there are some incompatibilities between the reference counting / allocation code used by the OpenCV Mat type and some versions of MinGW. I say this because all my crashes seemed to come from sections of code using the openCV matrix. (It seemed like it wasn't properly initialized or something). Switching to the TDM-GCC compiler fixed the problem.

OpenCV problems with Netbeans and Cygwin

I have tried today for five hours to install OpenCV and run a simple program to check that it works. I have not been able to do this despite looking at several tutorials and youtube video's. Could anyone tell me firstly if there is a difference between using cygwin or mingw? Why is it so hard to link the OpenCV libraries to netbeans. I love the IDE but will have to use Visual Studio if I cant get it working tomorrow. I have not been able to find a tutorial that references opencv2.4.6 which is the latest version and netbeans 7.4. For anyone interested the cygwin version I down loaded was 1.7.25. The main problem I am having is finding out how to correctly link the OpenCV headers etc to netbeans. If anyone has made a record of how to do this then sharing it would be great. Maybe I'm going wrong with the system variables I'm just not sure. As said any help or directions to up to date tutorials would be a great help. I love Netbeans and want to keep using it.
Thanks
I stumbled across this post while trying to set up OpenCV with Netbeans 7.4 on windows 7.
After finally getting everything to work I wrote this guide: OpenCV Netbeans C++ setup guide
I was able to get all the libraries linked. Also the clean/Build and run works for my C++ opencv 2.4.7 app from netbeans 7.4. Hope this can help anyone else who might want to use Netbeans for OpenCV coding.