在Ubuntu下的QT内使用Opencv

      最近用QT做界面,想做一个调用摄像头做颜色识别的窗口,百度搜索了一下才知道在QT内用opencv是可以调用摄像头来获取图像,只怪本人刚入门这行,小白一枚。(该段原理属于百度得到)opencv提供的highgui库调用Linux本身的v4l2机制就能控制摄像头,在qt中开一个30ms的定时器,不断通过摄像头捕捉图像,这30ms就是帧速,捕捉的图像在opencv中是lplimage类型,在qt中调用图像一般是Qimage类型,所以需要进行格式转换,摄像头捕捉的图像显示窗口为QWidget部件。

   环境:Ubuntu12.04.2 + opencv2.3+Qt4.8.0

   安装opencv步骤:

   1)终端下运行sudo apt-cache search opencv,显示如下:

     harpia - Image Processing/Computer Vision Automatic Prgm. Tool
     libcv-dev - development files for libcv
     libcv2.3 - computer vision library
     libcvaux-dev - development files for libcvaux
     libcvaux2.3 - computer vision extension library
     libhighgui-dev - development files for libhighgui
     libhighgui2.3 - computer vision GUI library
     opencv-doc - OpenCV documentation and examples
     python-opencv - Python bindings for the computer vision library

   2)安装如下这些安装包:

      apt-get installlibcv-devlibcv2.3 libcvaux-dev libcvaux2.3 libhighgui-dev libhighgui2.3 opencv-doc

   3)对qt安装目录下的mkspecs/default/qmake.conf修改,我的Qt安装目录/usr/share/qt4,qmake.conf在/usr/share/qt4/mkspecs/default下具体修改如下:添加

     QMAKE_INCDIR = /usr/include/opencv

     QMAKE_LIBS = -lcvaux -lcv -lcxcore -lhighgui -lml

  

在Ubuntu下的QT内使用Opencv_第1张图片

  4)设置环境变量

   在终端中输入sudo gedit ~/.bashrc

   修改如下:在最后添加如下语句:

   exportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfg

   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 

  5)打开XXX.pro文件指令为:viXXX.pro,添加以下内容

    INCLUDEPATH += /usr/include/opencv

    LIBS += /usr/lib/libopencv_core.so \

    /usr/lib/libopencv_highgui.so \

    /usr/lib/libopencv_ml.so

  源代码测试如下:

  #include

  #include

  #include

  #include

  int main()

 {

  IplImage *img = 0;

  CvCapture *pCapture= 0;

  char c;

  cvNamedWindow("tong",0);

  cvResizeWindow("tong",640,480);

  cvMoveWindow("tong",100,100);

  pCapture=cvCaptureFromCAM(0);

  while(1)

  {

     img=cvQueryFrame(pCapture);

     cvShowImage("tong",img);

     c=cvWaitKey(10);

     if(c==27)

         break;

  }

  cvReleaseImage(&img);

  cvReleaseCapture(&pCapture);

  cvDestroyWindow("tong");

  return 0;

 }

    第一次写博客,略紧张,求大神留情。




你可能感兴趣的:(Qt)