Difference between VVVV.EmguCV and EmguCV.221.x64 - emgucv

Can someone please throw some light on the difference between VVVV.EmguCV and EmguCV.221.x64. I am new to image processing itself.
Do they serve different purposes. As I understand they both are EmguCv wrappers to OpenCv. Is there any thing else to note?

VVVV.EmguCV and EmguCV.221.x64 are just two different packages by separate publishers.
VVVV.EmguCV installs the newer 2.4.X verison of EmguCV where as EmguCV.221.x64 uses the 2.2.X series of Emgu.
Apart from the usual changes EmguCV 2.4.X added support for Android and iOS devices.You can check the difference between the versions here.

Related

Is it okay to use the latest version of opencv?

I am learning to use opencv. I am trying to install it from opencv official website. Is it okay to install the latest version(4.0.0)? I suppose that latest version should be compatible with the earlier versions so there shouldn't be any problem.
Is it okay to install the latest version(4.0.0)
Generally: Yes, why not? If you want to use the newest modules (like gapi, added in 4.0.0) you will need to use the newest version. It also makes a lot of sense to use the newest because they improved the performance for some operations compared to version 3.x.x.
I suppose that latest version should be compatible with the earlier versions so there shouldn't be any problem
Not necessarily. Version 4 to 3 might be compatible (I'm still using 3.x.x), but 3 to 2 are in fact not completely compatible. Most noticeable they moved a lot of functionality from the highgui package. From the official change log:
Although OpenCV 3 can be viewed as refined OpenCV 2 and is similar to the latter, this new version is not completely backward-compatible with OpenCV 2
I'd recommend you to read the official changelog for yourself and decide if you need the new functionality or if you want to stay with an older version. If you are new to OpenCV it probably makes sense to start with the newest version.

opencv not able to run some advanced image processing code

i am using visual studio 15
some basic blurring and filters are running perfectly but on some codes such as blending and dct techniques are not running
Can anyone please help me
At this point its probably best to create your own compiled library tools for MicroSoft Visual Studio 15. Here's a how to guide. That guide covers all the steps and starts with the most current code on Github.
Also note there are many tutorials out there on OpenCV. Many parts of the OpenCV library have been update, or replaced. You have to be careful that the commands you are using are valid in OpenCV 3.x
Compile your own, run a few simple programs.
If you want specific help here, you MUST post your code, and the errors you are seeing.

What is the deference between OpenCV2.4.10 and JavaCV 0.10

I want to know if I download the OpenCV2.4.10, is there the need of JavaCV 0.10 or not, because in the extracted folder of OpenCV2.4.10 inside \OpenCV\build\java there is a Jar file named opencv-2410.jar. I am using Java Language to use OpenCV library. But I also saw JavaCV which can be found at http://bytedeco.org website, when I downloaded all Jars, here I also found named opencv.jar file. Now I don't know what is the deference between them, in Java Language which one is better to use. If use OpenCV2.4.10 is need to JavaCV 0.10? and if use JavaCV 0.10 is need to OpenCV2.4.10? or both of them can be independent used? the If anyone know about this please tell me, Thanks in advance!!
OpenCV library is written in C/C++. Java wrappers are written so that, C/C++ code could be invoked with JNI. JavaCV( unofficial ) and OpenCV( official ) are completely independent java wrappers to use OpenCV from Java.
I suggest you use OpenCV downloaded from offical opencv.org website or from OpenCV github repo(1). Here java wrappers are auto generated during build and so all C/C++ OpenCV functions will have corresponding Java wrappers. This way, every new release or even development versions of OpenCV could be used from Java. This also helps with reading documentation as function parameters matches nearly.
JavaCV is a popular Java wrapper for OpenCV maintained by independent developer(s). It also add helper classes for easier usage. But here, wrappers are not auto generated and so you will need to wait for developers to update to newer versions.

what is the difference between OpenCV 2.4.11 and 3.0.0

The latest release of OpenCV shows 2.4.11 Feb,2015 which is more recent then 3.0.0 which is in Beta. What is the difference between them. Should I use OpenCV 2.4.11 over 3.0.0 as I have encountered few bugs in 3.0.0. How do their releases work?
Though there are new features( like text detection, KAZE detector ) in OpenCV 3.0, for most developers, this comparison is not about features. It is about speed. Unless you are immediately into production, I suggest you use OpenCV 3.0. Also, this is far from adventurous.
The key difference is transparent API in OpenCV 3.0. Almost all OpenCV 3.0 methods are OpenCL accelerated. So, all methods could run on GPU and this could lead to improvement from 10 to 230%. Only change in required in your code is to use UMat where you used to use Mat. Samples(1). If you needed this performance in OpenCV 2.4.*, you had to explicitly invoke cv::ocl::* or cv::gpu::* methods.
If you happen to be a Java developer, it is even better. Java wrappers for classes/methods which were unavailable earlier, are now provided in OpenCV 3.0 ( see widely used KalmanFilter )
There are changes like internal module restructure, which from a
developer point of view, is minor as that could be resolved by
changing OpenCV headers in your code.
About the release cycle, a quick look into OpenCV github repo(2) shows, pull request are mostly going into master branch which is for OpenCV 3.0. So I assume, major bug fixes could be backported to 2.4.* branch.
For more, on differences read (3) and (4). About the bugs you encountered in 3.0 beta, it could helpful, if you could raise them with a minimal complete running sample at OpenCV issues page(5).
3.0.0 should bring a lot of new features but it's currently beta and not the official release (can be unstable). Last official stable release was 2.4.11.
Use the 3.0.0 if there is features you don't retrieve in 2.4.11 or if you are adventurous (3.0.0beta is great and the final release should come soon). If you want security with no additional needs, use 2.4.11.
In addition to the answers provided above, another important difference is that SIFT/SURF feature detection has been taken off the default openCV 3.0 package.
Since they are patented, openCV has moved 'non-free' algorithms to a different package:
opencv_contrib

How to setup OpenNI 2.0 with OpenCV for a Kinect project?

I am working on my final year project. I need to work with Kinect to detect hand movements. I have tried a few ways and got some results, however, none was enough to meet the needs of the project. I saw this video long ago, and just got to know that they open sourced it recently. So I gave it a try.
My problem now is how to set things up.
The above awesome project uses OpenNI with Kinect. I tried to follow OpenCV tutorials to build it from source code, to let OpenCV work with OpenNI.
Problems:
It says "For the OpenNI Framework you need to install both the development build and the PrimeSensor Module." but as I followed the links some of them were dead. Seems like OpenNI 2.0 doesn't use PrimeSensor any longer.
It also says that in Cmake folders, one is OpenCV/Src, the other is /build. But the OpenCV I downloaded doesn't have anything as Src folder.
Still I used the whole folder as Src, and built it to a build folder and checked WITH OPENNI. I used the Include and Lib folder in OpenNI2 I downloaded, but when I built the OpenCV solution (already generated from CMake) all builds failed.
Also, while generating with Cmake, even if my future OpenCV solution had been successfully built (which wasn't the case), Cmake would have kept telling me how PrimeSense was not available, which made me feel so insecure. :(
I am a bit confused about 32- and 64-bit. The above project I want to follow says it works on 64-bit. But I use MS C++ Express, all projects are 32-bit. So which PrimeSense drivers (given in OpenNI2) should I use?
Could anyone please tell me how to set all these things (OpenNI2.0, OpenCV 2.4.3, PrimeSense) together so I can work with Kinect?
A while back I wrote two tutorials on 1) how to set up OpenNI 1.5 with NITE 2) How to compile OpenCV with OpenNI support.
These can be found here and here
I know this is not what you asked for, but the process of compiling OpenCV with OpenNI 2.0 should be similar and might help you understand where you are going wrong.
I will try to write a newer tutorial, however since I currently do not have access to a sensor, I might not be able to test if it works out in the end.
EDIT:
I have written some code to access Kinect data streams in OpenCV Mat format using OpenNI 2.x. The code github repo can be found here. Detailed guidance on how to set everything up can be found here.
OpenNI 2.x is much advanced than the previous versions. You don't need to install primesense sensorkinect driver. You can use OpenNI 2.x along with the Microsoft Kinect SDK 1.x.
Install both 64 and 32-bit OpenNI 2.x if you have Windows 7 x64 otherwise only 32-bit. Configure it with Visual Studio 2010 or 12. You can follow this video:
http://www.youtube.com/watch?v=ACqPsV0R4to
Then configure OpenCV for visual Studio 2010 or 12. You can follow this link:
http://4someonehelp.blogspot.in/2013/04/install-opencv-245-using-visual-studio.html
Thanks

Resources