OpenCV4学习记录(一)解决第一步OpenCV4.5.1+VS2019+CMake

OpenCV4学习记录(一)解决第一步OpenCV4.5.1+VS2019+CMake,第1张

因为需要做嵌入式平台下的图像处理需求,之前学习了Python中OpenCV的使用,但是python脚本在树莓派和Jetson等平台上的启动速度真的不敢恭维,所以考虑使用C++重新学习一遍OpenCV,开发使用VS2019+CMake+OpenCV4.5.1直接进行跨平台开发

下载 OpenCV

访问 OpenCV 官网,下载 Windows 版本 Release.
也可以直接从GitHub上下载源码,但是那样不包含已经编译过的库文件,需要重新在本机编译,比较麻烦,使用Windows 版本 Release的vs15编译版本+vs2019目前还没发现其它问题。



这个预先的build不包含CUDA的模块的一些功能,需要做dnn的CUDA加速的话还是需要本地编译源码。



官网下载的文件名类似于 opencv-4.5.5-vc14_vc15.exe
这个文件其实是自解压程序,双击解压到合适的位置,比如:D:\



解压后将得到一个目录:D:\opencv


配置环境变量

将 OpenCV 的 “bin” 文件夹路径添加到环境变量,否则可能出现 “xxx.dll 无法找到” 一类的错误。



本例中为 D:\opencv\build\bin 以及 D:\opencv\build\x64\vc15\bin



注意,示例中的 “vc15” 需要根据 visual studio 版本进行修改,你可以参考下列表格:
多提一句,“.dll” 后缀之前有 “d” 的是 “debug” 版本,否则为 “release” 版本。



这里提一个便于后期更换版本的添加环境变量的方式:
先新建一个OPENCV_DIR的环境变量,直接指向opencv的目录

然后再在Path环境变量中添加对OPENCV_DIR的引用:

另外,添加环境变量后可能要重启后才能生效。


编写 CMakeList.txt

此处以一个名为 “CMakeopencv” 的项目为例:这里的 CMakeList.txt是VS自动生成的模板

# CMakeList.txt: CMakeopencv 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。


# cmake_minimum_required (VERSION 3.8) project ("CMakeopencv") # 将源代码添加到此项目的可执行文件。


#add_executable (CMakeopencv "CMakeopencv.cpp" "CMakeopencv.h") add_executable(imageshow "imageshow.cpp") set(OpenCV_DIR E:/PC/Opencv4.5.1/opencv/build) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) target_link_libraries(imageshow ${OpenCV_LIBS})

注意到以下几点:
第 3 行 需要配置 OpenCV_DIR 为 “你刚刚解压的路径\build
第 7 行 记得将 lib 链接到项目
至此,OpenCV 环境配置完成。



相较于 VS 工程文件的配置方式,使用 CMake 配置更加简单,通过一份 CMakeList.txt 可以轻松实现跨平台。



另:
OpenCV 官方提供的是使用 vc 的 build,如果想要使用 Clion 进行开发,需要使用 Cmake 从 OpwnCV 源码生成一个 mingw 类型的 make,然后使用 mingw 进行编译,最后修改 set(OpenCV_DIR D:/opencv/build)set(OpenCV_DIR D:/opencv/你编译的目标路径)(比如 “mingw-build”)。


IMAGE WATCH

Image Watch 是opencv官方推出的用于调试时显示和监控图像变量的插件。


通过它我们能够很方便的对CV程序进行调试。


直接从VS中下载,选择工具->拓展与更新->搜索Image Watch,点击安装即可
Image Watch 读取的是堆栈中的图像数据,初学的时候注意打断点,在Debug模式下运行,效果如图所示。



Image Watch用过python版本时总是很纠结查找轮廓等 *** 作时怎么确定对象的大小,然后就是反复断点调试,在VS平台下有了这个工具简直不要太方便。




如果初次没有打开的话,在视图->其它窗口中打开即可。



测试代码

功能:读取图像,转为灰度,显示图像,保存图像。


#include
#include 		//定义了色域转换常量
#include
#include

int main() {
	cv:: Mat gray_image;
	cv::Mat imagename = cv::imread("E:\\CV\\Project\\VSCpp\\CMakeopencv\\image\\3.jpg");
	cv::cvtColor(imagename, gray_image, cv::COLOR_BGR2GRAY);	//转为灰度图像
	cv::imwrite("E:\\CV\\Project\\VSCpp\\CMakeopencv\\image\\1_grayimage.jpg", gray_image);
	cv::namedWindow("imagename", cv::WINDOW_AUTOSIZE);		//设置图像窗口的大小 WINDOW_AUTOSIZE为自适应大小
	cv::namedWindow("Gray image", cv::WINDOW_AUTOSIZE);
	cv::imshow("imagename", imagename);
	cv::imshow("Gray image", gray_image);
	cv::waitKey(0);
	return(0);
}

参考连接:在这里感谢先前大神们的贡献
https://blog.csdn.net/flyconley/article/details/121723446

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

原文地址: http://outofmemory.cn/langs/589661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存