欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cmake工程-配置opencv读取图像(win)

程序员文章站 2022-07-14 17:00:43
...

前言:跨平台开发的初衷便是一处开发,到处运行。昨天折腾了一天,简单配置opencv来读取一张我的帅照。本篇在windows下测试,但既然为跨平台,那么在unix下也是可以的,条件调用即可。

一、vs创建cmake工程

文件目录如下:

Cmake工程-配置opencv读取图像(win)

源文件:

#include "cmake_opencv.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("D://test.jpg");
    imshow("test", img);
    waitKey(0);
    return 0;
}

二、CMakeLists.txt

# TODO: 如有需要,请添加测试并安装目标。
# CMakeList.txt: opencvTest 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)
project(cmake_opencv)

# 设置opencv目录,其实是OpenCVConfig.cmake目录,它在/x64/vc14/lib下
# set(OpenCV_DIR "D:/masterstu/C++/opencv342/opencv/build/x64/vc14/lib")

# 其实去看文档会发现OpenCVConfig.cmake文档里就要求我们这样写就行
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS}) # Not needed for CMake >= 2.8.11

# 将源代码添加到此项目的可执行文件。
add_executable (cmake_opencv "cmake_opencv.cpp" "cmake_opencv.h")
target_link_libraries(cmake_opencv ${OpenCV_LIBS})

没事多看看源码中的东西还是有帮助的。Cmake工程-配置opencv读取图像(win)

然后这样写了你会发现报了这么个错:

Cmake工程-配置opencv读取图像(win)

是什么意思呢?大致就是说没有找到那个配置文件,你需要设置一个OPENCV_DIR来设置它

然后就加上这句

set(OpenCV_DIR "D:/masterstu/C++/opencv342/opencv/build/x64/vc14/lib")

 这下该没错了吧,点击保存,成功。其实之前到这一步还有个错误,然后修改

Cmake工程-配置opencv读取图像(win)

得把这个修改未true,否则还会报错,我秀改了之后就好了, 但是在记录此博客时发现,我改回false竟然也没报错,这一点有些奇怪。不过遇见时对应修改就可以,这里提个醒。在此更新下,这个错误我浮现了,是在生成vs工程时会出现:(更正,opencv自带的cmake配置文件需要到x64/vcx/lib下,并非build下)

Cmake工程-配置opencv读取图像(win)

所以,将set(OPENCV_FOUND TRUE)即可。重新cmake,成功。 

生成vs工程:cmake -G"Visual Studio 15 2017 Win64" ..

解释:我的opencv是opencv342 64位,默认生成32位的工程,否则会爆模块计算机类型与目标计算机类型不匹配,我的vs是2017.以下是生成的vs工程,点击可以直接运行。  

Cmake工程-配置opencv读取图像(win)

三、结果

Cmake工程-配置opencv读取图像(win)

帅就是这么自信!

四、总结

本篇简单记录了下图像处理时cmake工程结合opencv配置开发的一些问题,方便后续回顾。 

相关标签: 跨平台开发