opencv+Qt+cmake安装配置

opencv+Qt+cmake安装配置,第1张

Qt5.7.1

CMake 3.10.2

opencv-3.3.0-vc14

右键“我的电脑”——属性——高级系统设置——环境变量,我的路径是C:\Qt\Qt5.7.1\Tools\mingw530_32\bin,如图所示

打开CMake,设置源码的路径和输出路径,然后点击Configure,选择如所示

Next,配置c和c++,我的路径如下

点击Finish,等待加载完毕,暴很多红项

在Search框内搜索WITH_QT和WITH_OPENGL,都打上勾,再点击Configure

此时还有这几项是红的,点击ADD Entry,添加“QT_MAKE_EXECUTABLE”,并选择qmake的路径如图所示

在Search搜索CMAKE_BUILD_TYPE,修改value成  Release 或RelWithDebInfo

再次点击Configure,然后点击Generate

打开cmd命令提示符,进入输出文件夹并编译

这里的8根据自己电脑配置而定,8核cpu  我这里填8

如果编译过程中出现类似这样的错误:

解决办法:在CMake搜索ENABLE_PRECOMPILED_HEADERS,把这个项的打勾去掉,然后点Configure,Generate,再执行编译:ming32-make -j 8

如果遇到类似这样的错误

解决办法:根据提示的路径去opencv源码文件找cap_dshow.cpp文件,我的在D:\tmp\opencv\sources\modules\videoio\src文件夹里,用记事本打开cap_dshow.cpp,搜索

然后在上面添加

再次执行编译:ming32-make -j 8

方法同上,把D:\tmp\opencv-build\install\x86\mingw\bin添加到path里

打开Qt,新建一个项目,Qt Widgets Application 

调试

如果出现错误:

解决办法:点击左侧的项目,填好构建目录,如图所示:

修改.pro文件,添加

这里需要注意一下330,有些版本是320

修改完后,点击构建 ,执行qmake

修改mainwindow.cpp

效果:

通过如下方式配置opencv时,有些时候,cmake找不到opencv而报错

这时有两种方式解决这个问题。分别如下:

在CMakeLists.txt中指明OpenCV_DIR

添加环境变量 OpenCV_DIR ,值为能找到OpenCVConfig.cmake或者OpenCVConfig-version.cmake的opencv路径

这样就不用在CMakeLists.txt中添加 OpenCV_DIR 的配置了。cmake会自动找到opencv。

在终端窗口中输入:

export OpenCV_DIR=/usr/local/opencv-3.1.0

编辑/edt/profile 文件

sudo gedit /edt/profile

添加如下语句

export OpenCV_DIR=/usr/local/opencv-3.1.0

编辑完退出

使配置生效

source /etc/profile

打开VS2019创建CMake项目

CmakeList.txt

# requirement of cmake version

cmake_minimum_required(VERSION 3.10)

set(Project_Name OpencvTest)

set(SRC_LIST OpencvTest.cpp)

set(OpenCV_LIB "D:\\lufiles\\opencv310\\build\\x64\\vc14\\lib")

set(Opencv_Include "D:\\lufiles\\opencv310\\build\\include")

# set(OpenCV_LIB "D:\\lufiles\\opencv310\\build\\")  # 这两个目录中都包含 OpenCVConfig.cmake 文件,两种设置都可以构建项目

PROJECT(${Project_Name})

include_directories(${Opencv_Include})

link_directories(${OpenCV_LIB})

add_executable(${Project_Name} ${SRC_LIST})

target_link_libraries(${Project_Name} opencv_world310d.lib)

OpencvTest.cpp

#include <opencv2/core.hpp>

#include <opencv2/videoio.hpp>

#include <opencv2/highgui.hpp>

#include <iostream>

#include <stdio.h>

using namespace cv

using namespace std

int main(int, char**)

{

    Mat frame

    //--- INITIALIZE VIDEOCAPTURE

    VideoCapture cap

    // open the default camera using default API

    // cap.open(0)

    // OR advance usage: select any API backend

    int deviceID = 0             // 0 = open default camera

    int apiID = cv::CAP_ANY      // 0 = autodetect default API

    // open selected camera using selected API

    cap.open(deviceID + apiID)

    // check if we succeeded

    if (!cap.isOpened()) {

        cerr <<"ERROR! Unable to open camera\n"

        return -1

    }

    //--- GRAB AND WRITE LOOP

    cout <<"Start grabbing" <<endl

        <<"Press any key to terminate" <<endl

    for ()

    {

        // wait for a new frame from camera and store it into 'frame'

        cap.read(frame)

        // check if we succeeded

        if (frame.empty()) {

            cerr <<"ERROR! blank frame grabbed\n"

            break

        }

        // show live and wait for a key with timeout long enough to show images

        imshow("Live", frame)

        if (waitKey(5) >= 0)

            break

    }

    // the camera will be deinitialized automatically in VideoCapture destructor

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11700690.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存