How to use OpenCV2.2 with Dev C++ 4.9.9.2? - c++

I wish to use opencv on my project work. Therefore, I downladed OpenCV2.2 http://sourceforge.net/projects/opencvlibrary/ and installed it. Then I made following configuration in Dev C++ 4.9.9.2 since i am using Dev C++ compiler for my works;
OpenCV library is installed in the C:\ OpenCV2.2 directory
Open Dev C++ and Tools ->Compiler Options and then add a new compiler named OpenCV
Then, click Add these commands to the linker command line and include following linker: -lopencv_core220d -lopencv_highgui220d -lopencv_video220d -lopencv_ml220d -lopencv_legacy220d -lopencv_imgproc220d
Add C:\ OpenCV2.2\include\opencv and C:\ OpenCV2.2\include\opencv2 on to C includes and C++ Includes on directories.
Also add static libaries paths to C:\ OpenCV2.2\lib and bin directory path to the C:\ OpenCV2.2\bin
then, i tried to compilng C programs on the sample directory but I got lot of error messages
Then, I downloaded Cmake (Windows (Win32 Installer) cmake-2.8.4-win32-x86.exe- binary distributions) from “http://www.cmake.org/cmake/resources/software.html and instaled it. According to the OpenCV installation guide (http://opencv.willowgarage.com/wiki/InstallGuide), I tried to configure opencv using Cmake. I did this using Cmake GUI and also tried using command line however both attempts were not success anf got lot of error messages (ex.Error in configuration process , project files may be invalid).
Please give me correct steps to do this.

Related

How do I setup OpenCV 3.4.0?

I have instructions for OpenCV 2.4.3 at:
Installing OpenCV 2.4.3 in Visual C++ 2010 Express [closed]
But, I have not been able to completely convert that to 3.4.0
I get the error
cannot open file 'opencv_calib3d340d.lib'
For OpenCV 2.4.3 the file name is "opencv_calib3d243d.lib"
My guess is that in OpenCV 3.4.0 the file name is "opencv_calib3d340d.lib"
But that is not correct.
I have been using opencv 3.3, and after seeing this post I decided to try 3.4 to see if opencv_calib3d340.lib is missing, and it's not, it's still there.
If you download the winpack, on windows then I believe you use the opencv_world340.lib and .dll, but if you use cmake and build your own, then opencv_calib3d340.lib is in the lib folder.
To setup:
Download the sources zip file, unzip somewhere. Then open cmake gui, choose the source directory, build binaries directory and a current generator. Then click configure, wait, then generate, wait, then open project.
After that build 'ALL_BUILD', or just build opencv_calib3d if that's all you want, saves a lot of time.
I just tried the steps above and they work:
Áfter this I have both a opencv_calib3d340.dll file in bin/ and opencv_calib3d340.lib in lib/
I also tried the debug build and there is a file opencv_calib3d340d.lib as well as a opencv_calib3d340d.dll file.

How can Codeblocks find my header files even without adding any search paths

I'm learning to use OpenCV (and C++) in Codeblocks. What confuses me, however, is that when I start to include header files from OpenCV in my main.cpp file, Codeblocks automatically suggests to me the files as shown in the image below.
I have not included any search paths to project build options, so how is this possible that Codeblocks can find the files? Is there some other variable working here that I'm unaware of?
Note that I'm a beginner with both Codeblocks and OpenCV and that I only have a little experience with C++.
Thank you
Of course when you install an IDE like code::blocks by default, it knows about standard path for library on your OS.
On my OS -> Ubuntu that is /usr/include
It only searches on a standard path, except you add one. If you install your library by command-line, it goes to the standard place, if you installed manually, then it depends on your option you added to installation. I can not see you screen-shot but it has access to /usr/include by default.
For more detail on Linux and OpenCV
And here is a screen-shot of codeblock on Ubuntu that I added some 3rd-party library
NOTE:
if you install any libraries by command-line, just use it.
But if you have installed them manually, you need to add 2 things to codeblock.
1. First is your path for header file
2. Second is your path for linker
And you see it in screen-shot that say: Search Directory
First is for header and second is for linker

OpenCV - how to prioritize opencv libraries compiled in /home over those from /usr/lib/ using Eclipse C++ IDE

I want to setup an OpenCV project in Linux using Eclipse IDE in C++.
First, I have compiled my own version of OpenCV using the instructions mentioned on the openCV website in my /home/ directory. After this, I wanted to setup a basic show image project using Eclipse IDE following their instructions.
However, I am using OpenSUSE 12.2 and I have an older, preinstalled version of OpenCV in /usr/ and when I build the project and check the linked libraries of OpenCV with the ldd command applied to the generated binary, it points out to the library files from /usr/lib64/.
In order to point out to the compiled library files from my home library I had to modify the LD_LIBRARY_PATH environment variable from .bashrc file:
export LD_LIBRARY_PATH=/home/user/OpenCV/release/lib/:$LD_LIBRARY_PATH
Following this, I started the Eclipse IDE from a terminal with the reinitialized .bashrc file.
After this step it worked. However, is there a way to prioritize the /home/ path over the /usr/ path from Eclipse IDE instead of doing the ./bashrc trick?
Try run your program after setting LD_PRELOAD environmental variable, pointing to your libraries that you want to be loaded first.
You can prepare a script to lauch your program:
export LD_PRELOAD=./your_library.so
./your_program

Importing Armadillo C++ library into Xcode

I'm a mac user and am trying to install and import C++ Armadillo library. Here are the steps I've had so far:
1) I downloaded the Armadillo library from its website.
2) I went over the Readme.txt file in the download file explaining how to install it.
3) I used CMake to make the armadillo download files into binary files.
4) Then by using terminal and the code sudo make install, I installed the binary codes and they generated some "library-like" files: libarmadillo.4.0.2.dylib, libarmadillo.4.dylib, lib armadillo.dylib
5) I then copied all these files into /url/lib directory.
6) Now I have my Xcode program running and I'm trying to include the armadillo library via the include command. The problem is Xcode highlights this line and it says "armadillo file not found". Could anyone please help me solve this issue?
Thanks very much,
You need to set the following things in your build settings:
Header Search Paths: /path/to/armadillo/include (e.g. something like /url/lib/armadillo/include)
This is all you need for your source to compile. However, in order to get your program to link, you will also need the following:
Library Search Paths: /path/to/armadillo/libraries (e.g. something like /url/lib/armadillo/lib)
Other Linker Flags: -larmadillo (or: add the armadillo library to your Link build phase using the GUI)
If you're not exactly sure how to properly build and install armadillo (e.g. which prefix to use when configuring), I highly recommend using a package manager such as MacPorts to do it for you,
Install port from here
run the following command:
sudo port install armadillo
Your header path and library path will be: /opt/local/include and /opt/local/lib respectively

Getting started with OpenCV 2.4 and MinGW on Windows 7

How do I install OpenCV 2.4 and compile my code with MinGW?
1. Installing OpenCV 2.4.3
First, get OpenCV 2.4.3 from sourceforge.net. Its a self-file-extracting so just double click the file to start installation. Install it in a directory, say C:\.
Wait until all files get extracted. It will create a new
directory C:\opencv which contains OpenCV header files, libraries, code samples, etc.
Now you need to add C:\opencv\build\x86\mingw\bin directory to your system PATH. This directory contains OpenCV DLLs which is required for running your code.
Open Control Panel → System → Advanced system settings → Advanced Tab → Environment variables...
You will see a window like shown below:
On the System Variables section,
select Path (1), click Edit... (2), add C:\opencv\build\x86\mingw\bin (3) then click Ok.
This will completes the OpenCV 2.4.3 installation on your computer.
2. Installing MinGW compiler suite
I highly recommend you to use gcc (GNU Compiler Collection) for compiling your code. gcc is the compiler suite widely available in Linux systems and MinGW is the native port for Windows.
Download the MinGW installer from Sourceforge.net and double click to start installation. Just follow the wizard and select the directory to be installed, say C:\MinGW.
Select "C Compiler" and "C++ Compiler" to be installed.
The installer will download some packages from the internet so you have to wait for a while. After the installation finished, add C:\MinGW\bin to your system path using the steps described before.
To test if your MinGW installation is success, open a command-line box and type: gcc. If everything is ok, it will display this message:
gcc: fatal error: no input files
compilation terminated
This completes the MinGW installation, now is the time to write your "Hello, World!" program.
3. Write a sample code
Open your text editor and type the code below and save the file to loadimg.cpp.
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1);
if (im.empty())
{
cout << "Cannot open image!" << endl;
return -1;
}
imshow("image", im);
waitKey(0);
return 0;
}
Put lena.jpg or any image you like in the same directory with the file above. Open a command-line box and compile the code above by typing:
g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg
If it compiles successfully, it will create an executable named loadimg.exe.
Type:
loadimg
To execute the program. Result:
4. Where to go from here?
Now that your OpenCV environment is ready, what's next?
Go to the samples dir → C:\opencv\samples\cpp.
Read and compile some code.
Write your own code.
The instructions in #bsdnoobz answer are indeed helpful, but didn't get OpenCV to work on my system.
Apparently I needed to compile the library myself in order to get it to work, and not count on the pre-built binaries (which caused my programs to crash, probably due to incompatibility with my system).
I did get it to work, and wrote a comprehensive guide for compiling and installing OpenCV, and configuring Netbeans to work with it.
For completeness, it is also provided below.
When I first started using OpenCV, I encountered two major difficulties:
Getting my programs NOT to crash immediately.
Making Netbeans play nice, and especially getting timehe debugger to work.
I read many tutorials and "how-to" articles, but none was really comprehensive
and thorough. Eventually I succeeded in setting up the environment; and after a
while of using this (great) library, I decided to write this small tutorial,
which will hopefully help others.
The are three parts to this tutorial:
Compiling and installing OpenCV.
Configuring Netbeans.
An example program.
The environment I use is:
Windows 7, OpenCV 2.4.0, Netbeans 7 and MinGW 3.20 (with compiler gcc 4.6.2).
Assumptions:
You already have MinGW and Netbeans installed on your system.
Compiling and installing OpenCV
When downloading OpenCV, the archive actually already contains pre-built
binaries (compiled libraries and DLL's) in the 'build' folder. At first, I
tried using those binaries, assuming somebody had already done the job of
compiling for me. That didn't work.
Eventually I figured I have to compile the entire library on my own system in
order for it to work properly.
Luckily, the compilation process is rather easy, thanks to CMake. CMake
(stands for Cross-platform Make) is a tool which generates makefiles specific
to your compiler and platform. We will use CMake in order to configure our
building and compilation settings, generate a 'makefile', and then compile the
library.
The steps are:
Download CMake and install it (in the installation wizard choose to add
CMake to the system PATH).
Download the 'release' version of OpenCV.
Extract the archive to a directory of your choice. I will be using
c:/opencv/.
Launch CMake GUI.
Browse for the source directory c:/opencv/.
Choose where to build the binaries. I chose c:/opencv/release.
Click 'Configure'. In the screen that opens choose the generator
according to your compiler. In our case it's 'MinGW Makefiles'.
Wait for everything to load, afterwards you will see this screen:
Change the settings if you want, or leave the defaults. When you're
done, press 'Configure' again. You should see 'Configuration done' at
the log window, and the red background should disappear from all the
cells.
At this point CMake is ready to generate the makefile with which we will
compile OpenCV with our compiler. Click 'Generate' and wait for the
makefile to be generated. When the process is finished you should see
'Generating done'. From this point we will no longer need CMake.
Open MinGW shell (The following steps can also be done from Windows' command
prompt).
Enter the directory c:/opencv/release/.
Type mingw32-make and press enter. This should start the compilation
process.
When the compilation is done OpenCV's binaries are ready to be used.
For convenience, we should add the directory C:/opencv/release/bin
to the system PATH. This will make sure our programs can find the
needed DLL's to run.
Configuring Netbeans
Netbeans should be told where to find the header files and the compiled
libraries (which were created in the previous section).
The header files are needed for two reasons: for compilation and for code
completion. The compiled libraries are needed for the linking stage.
Note: In order for debugging to work, the OpenCV DLL's should be available,
which is why we added the directory which contains them to the system PATH
(previous section, step 5.4).
First, you should verify that Netbeans is configured correctly to work with
MinGW. Please see the screenshot below and verify your settings are correct
(considering paths changes according to your own installation). Also note
that the make command should be from msys and not from Cygwin.
Next, for each new project you create in Netbeans, you should define the
include path (the directory which contains the header files), the libraries
path and the specific libraries you intend to use. Right-click the project
name in the 'projects' pane, and choose 'properties'. Add the include path
(modify the path according to your own installation):
Add the libraries path:
Add the specific libraries you intend to use. These libraries will be
dynamically linked to your program in the linking stage. Usually you will need
the core library plus any other libraries according to the specific needs of
your program.
That's it, you are now ready to use OpenCV!
Summary
Here are the general steps you need to complete in order to install OpenCV and
use it with Netbeans:
Compile OpenCV with your compiler.
Add the directory which contains the DLL's to your system PATH (in our case:
c:/opencv/release/bin).
Add the directory which contains the header files to your project's include
path (in our case: c:/opencv/build/include).
Add the directory which contains the compiled libraries to you project's
libraries path (in our case: c:/opencv/release/lib).
Add the specific libraries you need to be linked with your project (for
example: libopencv_core240.dll.a).
Example - "Hello World" with OpenCV
Here is a small example program which draws the text "Hello World : )" on a GUI
window. You can use it to check that your installation works correctly. After
compiling and running the program, you should see the following window:
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int argc, char** argv) {
//create a gui window:
namedWindow("Output",1);
//initialize a 120X350 matrix of black pixels:
Mat output = Mat::zeros( 120, 350, CV_8UC3 );
//write text on the matrix:
putText(output,
"Hello World :)",
cvPoint(15,70),
FONT_HERSHEY_PLAIN,
3,
cvScalar(0,255,0),
4);
//display the image:
imshow("Output", output);
//wait for the user to press any key:
waitKey(0);
return 0;
}
This isn't working for me. I spent few days following every single tutorial I found on net and finally i compiled my own binaries. Everyting is described here: OpenVC 2.4.5, eclipse CDT Juno, MinGW error 0xc0000005
After many trials and errors I decided to follow this tutorial and to compile my own binaries as it seems that too many people are complaining that precompiled binaries are NOT working for them. Eclipse CDT Juno was already installed.
My procedure was as follows:
Download and install MinGW and add to the system PATH with
c:/mingw/bin
Download cmake from http://www.cmake.org and install it
Download OpenCV2.4.5 Windows version
Install/unzip Opencv to C:\OpenCV245PC\ (README,index.rst and CMakeLists.txt are there with all subfolders)
Run CMake GUI tool, then
Choose C:\OpenCV245PC\ as source
Choose the destination, C:\OpenCV245MinGW\x86 where to build the binaries
Press Configure button, choose MinGW Makefiles as the generator. There are some red highlights in the window, choose options as you need.
Press the Configure button again. Configuring is now done.
Press the Generate button.
Exit the program when the generating is done.
Exit the Cmake program.
Run the command line mode (cmd.exe) and go to the destination
directory C:\OpenCV245MinGW\x86
Type "mingw32-make". You will see a progress of building
binaries. If the command is not found, you must make sure that the
system PATH is added with c:/mingw/bin. The build continues
according the chosen options to a completion.
In Windows system PATH (My Computer > Right button click >
Properties > Advanced > Environment Variables > Path) add the
destination's bin directory, C:\OpenCV245MinGW\x86\bin
RESTART COMPUTER
Go to the Eclipse CDT IDE, create a C++ program using the sample OpenCV code (You can use code from top of this topic).
Go to Project > Properties > C/C++ Build > Settings > GCC C++ Compiler > Includes, and add
the source OpenCV folder "C:\OpenCV245PC\build\include"
Go to Project > Properties > C/C++ Build > Settings > MinGW C++ Linker > Libraries, and add to the Libraries (-l) ONE BY ONE (this could vary from project to project, you can add all of them if you like or some of them just the ones that you need for your project): opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
Add the built OpenCV library folder, "C:\OpenCV245MinGW\x86\lib" to Library search path (-L).
You can use this code to test your setup:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);
waitKey(0);
return 0;
}
Don't forget to put image to the C:/ (or wherever you might find suitable, just be sure that eclipse have read acess.
If you installed opencv 2.4.2 then you need to change the -lopencv_core240 to -lopencv_core242
I made the same mistake.
On Windows 64bits it´s works:
Download opencv-3.0 (beta), MinGW (command line tool);
Add above respective bin folder to PATH var;
Create an folder "release" (could be any name) into ;
Into created folder, open prompt terminal and exec the below commands;
Copy and Past this command
cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\
Execute this command mingw32-make
Execute this command mingw32-make install
DONE
I used the instructions in this step-by-step and it worked.
http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-eclipse-cdt-juno.html
As pointed out by #Nenad Bulatovic one has to be careful while adding libraries(19th step). one should not add any trailing spaces while adding each library line by line. otherwise mingw goes haywire.