Ubuntu16.04 配置QT+OpenCV3.3.1遇到的问题及解决方法

问题1:QT+OpenCV配置

新建一个工程,在“.pro”文件中配置OpenCV的库文件:

INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_aruco.so \
/usr/local/lib/libopencv_bgsegm.so \
/usr/local/lib/libopencv_bioinspired.so \
/usr/local/lib/libopencv_calib3d.so \
/usr/local/lib/libopencv_ccalib.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_datasets.so \
/usr/local/lib/libopencv_dnn.so \
/usr/local/lib/libopencv_dpm.so \
/usr/local/lib/libopencv_face.so \
/usr/local/lib/libopencv_features2d.so \
/usr/local/lib/libopencv_flann.so \
/usr/local/lib/libopencv_fuzzy.so \
/usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_imgcodecs.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_ml.so \
/usr/local/lib/libopencv_objdetect.so \
/usr/local/lib/libopencv_optflow.so \
/usr/local/lib/libopencv_phase_unwrapping.so \
/usr/local/lib/libopencv_photo.so \
/usr/local/lib/libopencv_plot.so \
/usr/local/lib/libopencv_reg.so \
/usr/local/lib/libopencv_rgbd.so \
/usr/local/lib/libopencv_saliency.so \
/usr/local/lib/libopencv_shape.so \
/usr/local/lib/libopencv_stereo.so \
/usr/local/lib/libopencv_stitching.so \
/usr/local/lib/libopencv_structured_light.so \
/usr/local/lib/libopencv_superres.so \
/usr/local/lib/libopencv_surface_matching.so \
/usr/local/lib/libopencv_text.so \
/usr/local/lib/libopencv_tracking.so \
/usr/local/lib/libopencv_video.so \
/usr/local/lib/libopencv_videoio.so \
/usr/local/lib/libopencv_videostab.so \
/usr/local/lib/libopencv_xfeatures2d.so \
/usr/local/lib/libopencv_ximgproc.so \
/usr/local/lib/libopencv_xobjdetect.so \
/usr/local/lib/libopencv_xphoto.so \

问题2:GTK+2.x要先于OpenCV安装

由于安装QT之前电脑上已经安装了OpenCV并将opencv_contrib部分一起进行了编译,因此运行QT时产生如下报错:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow......

多方尝试都未解决,最终还是不得不重新安装OpenCV.

OpenCV卸载

进入OpenCV安装路径下,找到编译时创建的文件夹build(或release),进入build文件夹下,在终端执行:

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

删除对应文件.

重新编译OpenCV

由于之前已经下载了OpenCV以及opencv_contrib并编译过,因此这里只需要重新对其进行编译.
首先将opencv_contrib.zip提取到OpenCV目录下,同时在该目录下新建一个文件夹build.
这里写图片描述

进入build目录下,执行cmake生成makefile文件:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/w/package/opencv-3.3.1/opencv_contrib-3.3.1/modules/ .. 

其中OPENCV_EXTRA_MODULES_PATH=/home/w/package/opencv-3.3.1/opencv_contrib-3.3.1/modules/ .. 对应的是实际opencv_contrib目录下的models目录.(后面的..不可省略).
这里写图片描述

生成完毕后,继续make:

 make -j4
 sudo make install

用make install,可能会由于权限问题报如下错误:

CMake Error at cmake_install.cmake:36 (file): file cannot create directory:......

然后在QT中配置好的新建工程里,使用OpenCV进行读入图片测试:

#include <QCoreApplication>
#include <iostream>

#include <opencv2/opencv.hpp>
using namespace cv;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Mat src;
    src = imread("/home/w/mycode/QT/img/daibola2.jpg", IMREAD_COLOR);
    if(src.empty())
    {
        std::cout<<"can not load the image... \n"<<std::endl;
    }

    namedWindow("src", 1);
    imshow("src", src);
    waitKey();
    return a.exec();
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/akadiao/article/details/80571491
今日推荐