Software Archive
Read-only legacy content
17061 Discussions

Using OpenCV with ICC and MIC

zvonimir_b_
Beginner
975 Views

Hello

I am working on my master thesis that involves using Intel Xeon Phi for image processing. I intend to use OpenCV libraries for the image processing, matrix multiplication and similar needs.

Firstly I have set up OpenCV for classic GCC compiler, and tested some basic code in Eclipse, that worked fine.

But now I'm trying to set up OpenCV for ICC and I'm not really sure what I need to do. I tried making OpenCV source using these instructions, but without success so far (errors while "make"-ing).
I also tried to use the GCC build libraries with ICC compiler in Eclipse, but that didn't work either. (screenshot in attachment).

I hope someone can give me some advice or specific solution on how to build, install and use OpenCV with MIC.

Thanks in advance
Zvonimir
 

0 Kudos
5 Replies
P__Robert
Beginner
975 Views

Computer Vision library has the following requirements:

 

http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html:

 

GCC 4.4.x or later
CMake 2.6 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev)
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
[optional] libtbb2 libtbb-dev
[optional] libdc1394 2.x
[optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev

The CMAKE build system requires further analysis. TBD

 

0 Kudos
zvonimir_b_
Beginner
975 Views

Maybe I misunderstood something, but you linked me the general OpenCV requirements. In my post, I said that I already successfully installed OpenCV and used it with GCC compiler. I presume that means my system meets the requirements for using OpenCV.

My problem is that I don't know how to use OpenCV with the Intel C++ Compiler. I guess I should do cross-compilation described here ( https://software.intel.com/en-us/articles/cross-compilation-for-intel-xeon-phi-coprocessor-with-cmake), but its not working for me as I get a bunch of errors while 'make'ing. (I can add them later, not possible to copy them ATM).

I would appreciate any further information on this topic.

Thanks for your time.

0 Kudos
P__Robert
Beginner
975 Views

I accept this challenge.

Using openCV:
Is it possible to program with 3DTV effect?

Is it possible to overlay a GUI/HUD onto video streams?

Also, when reviewing some lecture notes regarding 3DTV live programming, I found an article referencing openCV:

http://link.springer.com/chapter/10.1007%2F978-3-642-29154-8_12

This demo explains how to use a Wii remote with openCV.

The live image/depth was rendered with Vizard Virtual Reality SDK by moving around the wii remote

It would not only move the animated character, but it would also "move around" in 3d space.

I would like to implement a system that utilizes openCV, the PHI horsepower, and mic audio input.

Maybe introduce some 3DTV fractals based on the audio waveform properties.

 

0 Kudos
Amol_G_
Beginner
975 Views

Hi zvonimir b.

Did you find any solution to the problem. Kindly post here. I also have similar query.

Thanks

 

0 Kudos
zvonimir_b_
Beginner
975 Views

Hello Amol

Well, I have and I have not. Through my work I managed to install and setup OpenCV for ICC compiler, with quite some help from the people at OpenCV forums. But when I did all that, I've found out that it was not very useful after all.

Something that no one stated is that you cannot use Mat variables, the basic OpenCV data type, while "offloading" a part of code to the Xeon Phi. The problem that occurs states that you cannot use "Mat image" because it is not Bitwise Copyable. 

This means you need to convert every Mat variable to a bitwise copyable type, which makes using OpenCV pretty much useless in the first place.

There is a fix to this, but it didn't help my case. There is a data type UMat that is bitwise copyable and easily convertable from and to Mat, but - you cannot access specific element of the image - only the whole thing. 

So, bottomline, I wouldn't recommend using OpenCV with Intel Xeon. You can use it with ICC and use the intel acceleration (-O3 works great), but if you intend to use #pragma offload directives - it will work only if you do operations on the whole matrix, not individual elements of the matrix.

I would recommend just building the image related functions from scratch and working with Xeon for parallelization. It seems a lot of work - but getting OpenCV to work on ICC in the first place was a lot of work too.

Ask if you need additional help.

0 Kudos
Reply