Download And Installation: Difference between revisions
Line 135: | Line 135: | ||
You should see the planar subdivision window | You should see the planar subdivision window | ||
*Follow the instruction on [[Compiling with Monodevelop]], as the environment has been setup by cmake | *Follow the instruction on [[Compiling with Monodevelop]], as the environment has been setup by cmake | ||
=== System.DllNotFoundException === | |||
If you encounter this exception during | |||
<pre>mono Emgu.CV.Example.PlanarSubdivision.monoexe</pre> | |||
Your OpenCV build might be incomplete (e.g. GTK+ 2.x devel library is missing). To trace the cause of the error, run <pre>MONO_LOG_LEVEL=debug mono Emgu.CV.Example.PlanarSubdivision.monoexe</pre> and exam the error message. |
Revision as of 14:17, 5 November 2009
Windows
Getting the Dependency
- Emgu CV use WCF(Windows Communication Foundation) therefore requires .Net 3.0
- OpenCV 1.1pre for Windows is built on VS2005. You will need to install MSVCRT 8.0 SP1 available from this page
Building the Examples
- Follow this link to the file server on Source Forge.
- Download and extract the package Emgu.CV.SourceAndExamples-{version}.zip
- Go to the Solution folder
- If you are using Visual Studio 2005, browse to VS2005_MonoDevelop
- If you are using Visual Studio 2008, browse to VS2008
- Open
Emgu.CV.Example.sln
and build the solution. At this point, you should be able to run the example programs.
Creating a New Project in Visual Studio
To use the framework in Visual Studio, you need to
- Download and extract the binary files package Emgu.CV.Windows.Binary-{version}.zip (They are compiled from source on Windows using MsBuild)
- Create a new Visual Studio project or use an existing one
- Add the 3 files
zlib.net.dll
,Emgu.Utils.dll
andEmgu.CV.dll
to References of the project. If you needs to use the Machine Learning library, includeEmgu.CV.ML.dll
to References as well. - Copy the OpenCV dll files:
cv110.dll
,cvaux110.dll
,cxcore110.dll
,highgui110.dll
,ffopencv110.dll
andml110.dll
to the execution directory. - Optionally put the following lines in the top of your code to include the Emgu.CV namespace.
using Emgu.CV;
using Emgu.CV.Structure;
If you use the Machine Learning library, you mights wants to include the following as well
using Emgu.CV.ML;
- Follow the Tutorial to learn how to use Emgu CV. The "Hello, World" Example is a good starting point.
The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
If you see this exception, please check the following
Have you installed MSVCRT 8.0 SP1?
The OpenCV pre1.1 binary comes with Emgu CV version 1.5 is build with Visual Studio 2005, you will needs to installed MSVCRT 8.0 SP1 from this page to resolve the dependency issue.
Have you copy the OpenCV dlls to the execution directory?
- Make sure
cv110.dll
,cvaux110.dll
,cxcore110.dll
,highgui110.dll
,opencv_ffmpeg110.dll
andml110.dll
(unmanaged DLLs) are in the execution directory. The best way to do this is:- Copy the unmanaged DLLs to your project folder
- Right click on the project, click Add->Existing Item and select all unmanaged DLLs. Add them to the project.
- For each of the included Dlls, left click on it, find the "Copy to Output Directory" option and select "Copy if newer"
Are you running a 32-Bit OS?
The OpenCV pre1.1 binary comes with Emgu CV version 1.5 is compiled as 32bit binary.
If you are using a 64-bit OS, there are two ways to resolve this issue:
- One way is to recompile OpenCV pre1.1 from source as 64-bit binary. Do this at your own risk because OpenCV 1.1pre do not officially support 64-bit.
- The other way is, on your executable project, select Platform Target as 'x86'. This force your application to start in 32bit mode, even on a 64-bit OS.
Are you missing any dependency?
Download Dependency Walker and use it to open the "cxcore110.dll" file. Check if any dependecy is missing.
I have checked all of above but I still got the Exception
In this case, please try to build and run the examples. After building the examples, try to run the "Hello World" Program.
If "Hello World" runs without any problem, compare it with you project, find the difference in configuration and fix it.
If "Hello World" get the same "The type initializer for 'Emgu.CV.CvInvoke' threw an exception." message, try to find out the InnerException and report it to the discussion forum
Building from SVN
If you wants to build the development version of Emgu CV from source code, you can to get it from SVN following instructions on This page.
Prerequisite
- You will need to install CMAKE inorder to build the Unmanaged C++ code (OpenCV and cvextern.dll).
- You will need either Visual Studio 2008 / Visual Studio 2005 to build the Managed code (Emgu CV)
Building the unmanaged code
If cmake is installed in C:\Program Files\CMake 2.6\bin\cmake.exe
, run the BinaryBuid.bat
script located in the trunk folder of SVN.
Building the managed code
- Browse to the Solution Folder
- If you are using Visual Studio 2005, browse to VS2005_MonoDevelop
- If you are using Visual Studio 2008, browse to VS2008
- Open
Emgu.CV.sln
and build the solution.
At this point, the Emgu CV dlls should be available under bin folder in the top most directory.
Linux
Getting the Dependency
Fedora 10
- OpenCV
- We will build a custom version of OpenCV in the next step. It is recommended to remove any OpenCV package if it is installed on your machine. On Fedora 10, you can remove OpenCV by running
yum remove opencv
as root
- We will build a custom version of OpenCV in the next step. It is recommended to remove any OpenCV package if it is installed on your machine. On Fedora 10, you can remove OpenCV by running
- CMake
Emgu CV has adapted to use cmake to compile all it source code (as well as OpenCV).
- Make sure you have cmake installed, if not, login as root and call
yum install cmake
Ubuntu 9.10
- OpenCV
- We will build a custom version of OpenCV in the next step. It is recommended to remove any OpenCV package if it is installed on your machine.
- CMake
Emgu CV has adapted to use cmake to compile all it source code (as well as OpenCV).
- Make sure you have cmake installed, if not, run
sudo apt-get install cmake
Building from Source
- To build from source, you will need a SVN client to check out the source code from SourceForge. For more information, see SVN. The following command can be used to check out the source:
svn co https://emgucv.svn.sourceforge.net/svnroot/emgucv/trunk emgucv
- Go to emgucv directory
cd emgucv
- Use cmake to generate make file
cmake .
This will generate make file for Emgu CV
- Build Emgu CV by calling
make
Sit back and wait as this will build OpenCV, as well as cvextern.so, Emgu.Util.dll, Emgu.CV.dll, Emgu.CV.UI.dll and Emgu.CV.ML.dll
- To test the build, you can also build the PlanarSubdivision Example by calling
make Emgu.CV.Example.PlanarSubdivision
The PlanarSubdivision example use "cvextern.so" such that we can verify its correctness
- Now go to the bin folder
cd bin
- make sure mono can load the dynamic library from the current location by typing
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
- Try to run the example
mono Emgu.CV.Example.PlanarSubdivision.monoexe
You should see the planar subdivision window
- Follow the instruction on Compiling with Monodevelop, as the environment has been setup by cmake
System.DllNotFoundException
If you encounter this exception during
mono Emgu.CV.Example.PlanarSubdivision.monoexe
Your OpenCV build might be incomplete (e.g. GTK+ 2.x devel library is missing). To trace the cause of the error, run
MONO_LOG_LEVEL=debug mono Emgu.CV.Example.PlanarSubdivision.monoexe
and exam the error message.