[solved] Linking Nokia Qt with OpenVC



  • Hello. I been looking through the internet on how to link third party libraries (openCV) with NokiaQT. But I find very limited information.
    "http://developer.qt.nokia.com/wiki/OpenCV_with_Qt":http://developer.qt.nokia.com/wiki/OpenCV_with_Qt
    "http://www.qtcentre.org/threads/38861-OpenCV-integration-with-Qt-creator":http://www.qtcentre.org/threads/38861-OpenCV-integration-with-Qt-creator

    The official website("OpenCV":http://opencv.willowgarage.com/wiki/VisualC++_VS2010) describe on how to integrate OpenCV with IDE(Visual C).

    Include Directories... add: 'C:\OpenCV2.1\include\opencv;'

    Library Directories... add: 'C:\OpenCV2.1\lib;'

    Source Directories... add: 'C:\OpenCV2.1\src\cv; C:\OpenCV2.1\src\cvaux; C:\OpenCV2.1\src\cxcore; C:\OpenCV2\src\highgui; C:\OpenCV2.1\src\ml;'

    * For Debug Builds.. add: 'cv210d.lib; cxcore210d.lib; highgui210d.lib;'
    * For Release Builds.. add: 'cv210.lib; cxcore210.lib; highgui210.lib;' 
    

    So the question is how to integrate it on NokiaQT. Below is my pro.file
    @#-------------------------------------------------

    Project created by QtCreator 2011-03-12T01:59:47

    #-------------------------------------------------

    QT += core gui

    TARGET = cubaanImage
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp

    HEADERS += mainwindow.h

    FORMS += mainwindow.ui

    CONFIG += mobility
    MOBILITY =

    INCLUDEPATH += C:/OpenCV2.1/include/opencv
    C:/OpenCV2.1/src/cv
    C:/OpenCV2.1/src/cvaux
    C:/OpenCV2.1/src/cxcore
    C:/OpenCV2.1/src/highgui
    C:/OpenCV2.1/src/ml \

    LIBS += -LC:/OpenCV2.1/lib

    LIBS += -lcv210d -lcxcore210d -lhighgui210d

    symbian {
    TARGET.UID3 = 0xe62189e7
    # TARGET.CAPABILITY +=
    TARGET.EPOCSTACKSIZE = 0x14000
    TARGET.EPOCHEAPSIZE = 0x020000 0x800000
    }
    @

    Can someone tell me did I link it correctly and also one of my path have the word "include" -> C:\OpenCV2.1\include\opencv;
    it shows a yellow label on include in the NokiaQT. How to solve it thanks ^^



  • Hope someone can help.



  • I tried to integrate OpenCV with NokiaQT
    When debug it , the NokiaQT did not show the emulator. At the bottom of my

    Application Output Shows :
    C:\NokiaQtSDK\PSM\cubaanImage-build-simulator\release\cubaanImage.exe exited with code -1072365566

    Compile Output :
    The process "C:/NokiaQtSDK/mingw/bin/mingw32-make.exe" exited normally.

    Any ideas ? ^^

    Edit: merged this question from a separate post into this thread; Andre



  • On my mac I have just this in my *.pro file
    @INCLUDEPATH += /usr/local/include/opencv
    LIBS += -lopencv_highgui@
    Take a look "here":http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995



  • Scylla. I presume that you been using this for your project and it runs normally.Does it ?



  • Yes it runs normally. But I see you are using the symbian. I'm not in touch with symbian. Do you need a cross compiler for symbian, if yes do you have corss compiled the opencv libs?



  • What is a cross compiler ? Can you explain it to me ? I think my OpenCV does not have it



  • [quote author="tanclanship" date="1300090621"]What is a cross compiler ? Can you explain it to me ? [/quote]
    A "cross compiler":http://en.wikipedia.org/wiki/Cross_compiler is compiler that runs on platform A to produce binaries for platform B.

    So, in order to produce software that runs on Symbian, you probably will be needing a cross compiler that runs on your desktop and that produces binaries for Symbian, as you don't want want to compile your software on the device itself, I'd say :)



  • Andre -> Thanks for the information. Do NokiaQT could perform cross compiler on other third party libraries too ?



  • [quote author="tanclanship" date="1300091670"]Andre -> Thanks for the information. Do NokiaQT could perform cross compiler on other third party libraries too ?
    [/quote]
    I would imagine that an installed cross compilation tool chain would work for third party libraries too, if these libraries can be compiled for the different platform. For instance, if your library makes use of x86 specific functionality, then you can not expect to be able to compile and/or run it successfully on an ARM based device.



  • Andre -> I see. then the libraries do can be compile at different platforms . But problem again is that I do now know how to do it(refer first post). Thanks again

    Me -> Will be waiting here patiently for someone to solve the OpenCV and NOkiaQT problem.Been killing me



  • [quote author="tanclanship" date="1300092807"]Andre -> I see. then the libraries do can be compile at different platforms . But problem again is that I do now know how to do it(refer first post). Thanks again[/quote]
    I have no experience with this library, so I can't help you there.
    [quote]
    Me -> Will be waiting here patiently for someone to solve the OpenCV and NOkiaQT problem.Been killing me[/quote]
    I doubt that is a very effective strategy. I'd keep trying to find a solution myself, with lots of googling, posting in relevant forums, looking for relevant mailing lists, trying for relevant IRC channels, and if all else fails, even trying to email the author of the OpenCV library and politely asking where you might find pointers to solve your problem. The internet is a big place, and DevNet is not the only place where you might unearth solutions to your problems.



  • You can create a project qith QMake for the sources to compile (should also work with non Qt projects). You can use qmake -project for that. Then you can compile for the needed platform as you do with all other projects in QtCreator...



  • Below is my application project linked with OpenCV 2.2 (It works like a charm with 2 cameras attached)

    ...
    OPENCV_DIR = ../../../../LIBS/OpenCV/OpenCV-2.2

    INCLUDEPATH +=
    $$OPENCV_DIR/include
    $$OPENCV_DIR/modules/core/include
    $$OPENCV_DIR/modules/imgproc/include
    $$OPENCV_DIR/modules/video/include
    $$OPENCV_DIR/modules/features2d/include
    $$OPENCV_DIR/modules/flann/include
    $$OPENCV_DIR/modules/calib3d/include
    $$OPENCV_DIR/modules/objdetect/include
    $$OPENCV_DIR/modules/legacy/include
    $$OPENCV_DIR/modules/highgui/include
    $$OPENCV_DIR/modules/ml/include
    $$OPENCV_DIR/modules/contrib/include

    LIBS =
    -L$$OPENCV_DIR/modules/core/lapack/$$CONFDIR
    -L$$OPENCV_DIR/modules/core/$$CONFDIR
    -L$$OPENCV_DIR/modules/highgui/$$CONFDIR

    -lopencv_lapack
    -lopencv_core
    -lopencv_highgui

    win32: LIBS += -lvfw32 -lole32



  • this is the project file of your app, not for openVC.
    You have to build OpenVC for the target platform.

    So: get the source of OpenVC and compile it for your target platform.



  • I have compiled all modules from OpenCV 2.2 in Windows 7 and Ubuntu 64 bits.
    All the modules I've compiled with QtCreator. They are: lapack, core, contrib, calib3d, features2d, flann, gpu, haartraining, highgui, imgproc, legacy, ml, objdetect, traincascade, video.

    My application is linked with OpenCV with Qt project described above.



  • You are at a mobile forum,
    are you building for mobile?
    or for win7 and Ubuntu 64 bits?



  • I apologize, I have not noticed that it is a mobile forum.
    Yes, I have compiled for win7 and Ubuntu (32&64).
    In the near future, I'll try to compile for mobile platform.
    Sorry again.



  • [quote author="cincirin" date="1300101520"]I apologize, I have not noticed that it is a mobile forum.
    Yes, I have compiled for win7 and Ubuntu (32&64).
    In the near future, I'll try to compile for mobile platform.
    Sorry again.[/quote]

    -OK, so I have moved the thread to the General & Desktop forum.-
    Moved back to Mobile & Embedded on request of TS.



  • I have follow your instruction by downloading and install OpenCV2.2 in my default folder. C:/OpenCV2.2 . Below is my pro file. I have chance the OPENCV_DIR following my directory. but when I compile using NokiaQT I have error stating cannot find -lopencv_lapack. Please help thank you

    @OPENCV_DIR = C:/OpenCV2.2

    INCLUDEPATH +=
    $$OPENCV_DIR/include
    $$OPENCV_DIR/modules/core/include
    $$OPENCV_DIR/modules/imgproc/include
    $$OPENCV_DIR/modules/video/include
    $$OPENCV_DIR/modules/features2d/include
    $$OPENCV_DIR/modules/flann/include
    $$OPENCV_DIR/modules/calib3d/include
    $$OPENCV_DIR/modules/objdetect/include
    $$OPENCV_DIR/modules/legacy/include
    $$OPENCV_DIR/modules/highgui/include
    $$OPENCV_DIR/modules/ml/include
    $$OPENCV_DIR/modules/contrib/include

    LIBS =
    -L$$OPENCV_DIR/modules/core/lapack/$$CONFDIR
    -L$$OPENCV_DIR/modules/core/$$CONFDIR
    -L$$OPENCV_DIR/modules/highgui/$$CONFDIR

    -lopencv_lapack
    -lopencv_core
    -lopencv_highgui

    win32: LIBS += -lvfw32 -lole32@



  • Sorry "tanclanship" I have compiled all modules from OpenCV 2.2 by myself with QtCreator. If you install OpenCV with precompiled binaries from their site, is almost impossible that libs path be the same.
    Anyway, I looked at their site, and there are two download locations: one for Unix, one for Windows.
    For Windows, I have noticed that there are two variants : one with pre-compiled 32-bit binaries for Visual Studio 2010 developers, and one zip package with sources/headers to be build for your development environment. Which of these three options you've used ?



  • Windows Pre Compile 32 bit. So any suggestion what should I do next ?



  • Hi tanclanship,

    which compiler tool chain do you use with QtCreator?
    I ask as by default, then mingw tool chain is used.

    That is important. You can only use C++ libs that are build with the same compiler (also mingw, or same MSVS studio version).



  • I assume that you are using pre-compiled 32-bit binaries for Visual Studio 2010. If you have installed QtSDK for windows, it comes with MinGW toolchain. If you have installed Qt libraries 4.7.2 for windows, it comes tiwh VC2008 compiled libraries. In both both cases I don't think it's possible to link with VC2010 libraries. So, in my opinion you should have to compile OpenCV with MinGW or VC 2008. The simplest way is to use CMake ( OpenCV include tools for cross-compiling with CMake )



  • Im using the Tool Chain :minGw (it written in my Build Setting).
    Cincirin can you please guide me step by step on how to use CMake inside openCV as I have no experience to use it.



  • The easies way (from my point of view) would be:

    download source package for OpenVC

    create a project for it (qmake -project)

    use qmake & mingw-make (or QtCreator)



  • Gerolf I have done the following list. And now it shows no error. The emulator pop up as usual once debug.Alright so far so good.
    Cincirin do you have any simple coding for using OpenCV. so i could test its working

    @ IplImage *img = cvLoadImage("funny-pictures-cat-goes-pew.jpg");
    cvNamedWindow("Image:",1);
    cvShowImage("image:",img);

        cvWaitKey();
        cvDestroyWindow("Image:");
        cvReleaseImage(&img);
        
        return 0;
    

    @

    The code above provided using CVNamedWindow cannot be use in the QTSimulator.



  • You can download CMake from "here":http://www.cmake.org/cmake/resources/software.html
    But I'm not sure if you really want to use QtCreator for building your application and linked this with OpenCV library.
    CMake is cross-platform, open-source build system. For windows you have to choose for generating binaries (projects) between Visual Studio editions that you have them installed (2008, 2010, etc), CodeBlocks, makefiles, etc...
    As I said, I chose to compile the entire OpenCV library (all modules) with QtCreator for easy linked, debug, integrate in my application. QtCreator qmake project is not in CMake list. Therefore, each qmake project must be written manually.
    Fortunately for windows users, a solution can be:

    • generate VC projects with CMake
    • for every *.vcproj generated by CMake, manually create QtCreator project (static or dynamic library), and put in them all sources and headers from corresponding *.vcproj file.

    Other solution, without using QtCreator is:

    • download VC express 2008 (or if you have non-free editions, is better, because you can install Qt plug-in for VC)
    • choose VC 2008 from CMake list
    • download Qt libraries 4.7.2 for windows, it comes with VC2008 pre-compiled libraries
    • use VC 2008 for develop your app


  • Sure, for the moment I use OpenCV for calibrate lens of the Logitech 1080p webcam two cameras and put them in video stream. I don't know if you have a webcamera, but a sample program looks like :

    // init camera capture
    CvCapture* cameraCapture = cvCaptureFromCAM(0);

    // start a 0.1-second QObject timer
    timerID = startTimer(100);

    // ... and in your timerEvent ...
    IplImage* image = cvQueryFrame(cameraCapture);

    // you can convert IplImage in QImage "easy":http://www.qtcentre.org/threads/11655-OpenCV-integration

    // when finish, kill timer and release capture
    killTimer(timerID);
    cvReleaseCapture(&camerasCapture);



  • [quote author="Scylla" date="1300001278"]On my mac I have just this in my *.pro file
    @INCLUDEPATH += /usr/local/include/opencv
    LIBS += -lopencv_highgui@
    Take a look "here":http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995[/quote]

    Scylla, how did you installed the opencv? i've downloaded an opencv 2.0 dmg from their website but I don't have the /usr/local/include/opencv

    I have it on my framework folder:
    /System/Library/Frameworks/OpenCV.framework

    how can I link it?

    thanks a lot



  • I have downloaded the source "OpenCV-2.2.0.tar.bz2", unpacked, compiled and installed the libs (ccmake ., make, sudo make install). Nothing more!



  • ok i've figured it out. i've downloaded the 2.0 dmg and installed it on the framework folder.

    to access it i've added this to .pro:

    LIBS += -framework OpenCV

    is there any major diference between 2.0 and 2.2?



  • www.remnum.com
    you can find the full steps to build and link opencv 2.2 with qt
    on windows and mac system
    with project using qthread



  • thanks, already solved it ;)



  • If you've solved problem, please mark your thread as [solved]



  • this is not my thread :P



  • [quote author="Denis Kormalev" date="1303315410"]If you've solved problem, please mark your thread as [solved][/quote]

    I'm on it :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.