What do we need to install for developing with JavaCV? - opencv

I want to use and learn JavaCV.
• So, I read some articles about how to set up JavaCV development environment in Window 7. At first they download and install OpenCV and adding some directory paths to System Variable, After that ,they extract javacv-0.7-bin.zip and javacv-0.7-cppjars.zip packages to somewhere(probably C:) and add some .jar files to their projects.
My Question : Do I need to install OpenCV for developing in JavaCV? because I wrote some JavaCV programs and my JavaCV programs compile and run properly (without installing OpenCV).

According to a javacv developer, the answer is NO. It comes bundled. Source: javacv issue 406 on GitHub.

Related

Why cv_bridge uses OpenCV 3.2 in ROS Melodic?

I have OpenCV 3.4 installed in Ubuntu 18. I also have installed ROS Melodic according to the website instructions. However, I keep on getting an error that libopencv_core.so.3.2 is required.
I already set my CMakeLists files to point to OpenCV 3.4.
However, I found out that in the file:
/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
there is the following line hardcoded in opencv3.2:
set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0").
I tried to change it to 3.4 but I can not rebuild it.
The error I am getting is:
/opt/ros/melodic/lib/image_view/image_view: error while loading shared libraries: libopencv_core.so.3.2: cannot open shared object file: No such file or directory
Why is OpenCV 3.2 hardcoded in cv_bridge and how can I rebuild it with OpenCV 3.4?
Update:
I eventually installed OpenCV 3.2 and it worked properly.
Because opencv development speed is much faster than ROS individual module. And a lot of ROS modules went depreciated after someone left the job.
But that's by no means the end of the day( maybe end of the day for noobs). You can build it directly with any version of opencv core function(besides imshow kind of function) others should perform just fine.
The easiest way is to do is: in the console before executing catkin_make try to execute the following
export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
This should give preference to your custom OpenCV installation when doing the find_package(OpenCV 3.X.0 REQUIRED). Then compile and use the function of that version.
Well if you do have to use 3.4 then I think you have to build ros version of opencv and image transport and cvbridge to the 3.4 if that's what you are targeting.
You can find the link here https://github.com/ros-gbp/opencv3-release The highest they provide seems to be 3.3

OpenCV 2.4.3 release cannot be found to download

I am trying to install the Projector-Camera Calibration software available on: http://mesh.brown.edu/calibration/ . The software demands having installed Qt 4.8.4 and OpenCV 2.4.3 on my computer. It cannot work (as far as i know according to my research and INSTALL.txt file in the installation package) with any other versions of Qt and OpenCV. My problem is that OpenCV 2.4.3 version is no longer available anywhere on the Internet to download. It is not even available on the official OpenCV website: http://opencv.org/releases.html . I've tried downloading other versions of OpenCV, but none of them seems to work with this calibration software. More specifically, when I try to execute nmake release command in my Developer Command Prompt for VS 2017, the
LINK : fatal error LNK1181: cannot open input file
'opencv_core243.lib'
message is displayed which is expected because other versions of OpenCV do not have opencv_core243.lib file. I've done everything demanded in INSTALL.txt file, the PATH variable is set properly and everything else.
Can anybody help me with this problem or send me a link for downloading the OpenCV 2.4.3 if it is available somewhere on the Internet?
I don't see why the library should be dependent on that version of OpenCV. From my experience, the camera calibration functions are very stable through different versions.
You should be able to build the library with other versions of OpenCV by editing the file projector-calib.pro from:
# Windows 7
win32:OPENCV_DIR = "C:/opencv/opencv-2.4.3/opencv/build"
win32:OPENCV_LIB_DIR = $$OPENCV_DIR/x86/vc10/lib
win32:CV_VER = 243
to:
# Windows 7
win32:OPENCV_DIR = "C:/{YOUR_PATH}/opencv/build"
win32:OPENCV_LIB_DIR = $$OPENCV_DIR/{x64/x86}/vc12/lib
win32:CV_VER = {VERSION}
and substituting {YOUR_PATH}, {X64/X86} and {VERSION} properly. For OpenCV 2.4.13, for example, {VERSION} is 2413.

The exact build configuration of pre-built OpenCV 3.1 on Windows

I recently use the pre-built OpenCV 3.1.0 on Windows which was downloaded from here. Actually, I followed the official installation.
The thing is that I find that the VideoCapture module of pre-built OpenCV processes video very slowly. It seems that it has no support of ffmpeg. And I find the official note:
To use the OpenCV library you have two options: Installation by Using the Pre-built Libraries or Installation by Making Your Own Libraries from the Source Files . While the first one is easier to complete, it only works if you are coding with the latest Microsoft Visual Studio IDE and doesn't take advantage of the most advanced technologies we integrate into our library.
It makes me curious about what is the actual build configuration of pre-built OpenCV 3.1.0 (or other versions) on Windows. No supports of TBB, IPP, Eigen, CUDA, etc...? I didn't find any clue on the internet. Anyone knows?

How to cross-compile opencv

I'm trying (with no success) to cross-compile OpenCV on a embedded board.
I followed this: http://docs.opencv.org/doc/tutorials/introduction/crosscompilation/arm_crosscompile_with_cmake.html.
To summarize I installed the cross compilation tools for ARM, the I ran the cmake (providing the proper toolchain file), the make and the make install commands.
I next copied the lib/ include and bin/ directories with the opencv installation in the embedded board.
However, when I try to compile a simple hello world with opencv I get undefined reference to __gnu_thumb1_case_uqi and other similar symbols.
Does anybody faced this problem and know how to solve it?
Alternative approach
Just take some embedded distro like Buildroot, OpenEmbedded or Debian. They all provide OpenCV.
As I'm mostly experienced in Buildroot, I'd like to point to the newly introduced feature to keep your project separate from BR: http://nightly.buildroot.org/manual.html#outside-br-custom. This will give you a main idea on how to compile your software against BR's OpenCV.

About installing the open cv library

sir,
I have tried my level best to install open cv library 2.2.0 version.but it has'nt suceeded
it shows that errors in linking the library hughigh,
whether we wanted to insatll the ipp library prior to install the opencv?
please help me ?..............
I can only recommend the install advice on the OpenCV page. If you are using a unix download the source of the library you want to install and then use cmake to install the library. That usually works fine for me.
Try installing the 1.1 version of OpenCV.
The 2.x version is brand new and as of Nov 1 2009 you will have difficulty finding documentation for that. The 1.1 version of OpenCV, on the other hand, is very well documented and you should have no trouble finding online tutorials for your platform that walk you through the installation process step-by-step.
As an aside: "IPP" refers to Intel's Performance Primitives. In the 1.1 version these are entirely optional. OpenCV does not require them. If you have the Performance Primitives installed, however, your OpenCV code may run faster. (For me it cut down my image processing time by a factor of five.) Once you get everything up and running you can purchase the IPP library from intel here: http://software.intel.com/en-us/intel-ipp/

Resources