一、下载软件
获取最新OpenCV发行版:https://github.com/opencv/opencv/releases
这里我们下载最新的4.8.0:https://github.com/opencv/opencv ... v-4.8.0-windows.exe
本站下载:https://www.51halcon.com/forum.php?mod=viewthread&tid=6331
简单说下版本变更日志:
1.DNN模块补丁:
TFLite 模型支持,包括 int8 量化模型,支持更多的模型;改进了卷积在部分设备上的速度;
支持 ONNX 分割、切片、剪辑 (Relu6) 和带有 auto_pad 的 Conv;
现代 OpenVINO 支持;
2.G-API模块:
简化 OpenVINO 推理引擎(即 API 1.0 后端)中的预处理;
引入了全新的 OpenVINO API 2.0 后端;
更新了 G-API ONNX RT 后端以支持 ONNX RT 版本 1.14.1;
Python 绑定中 ONNX RT 后端的公开版本规范化选项;
3.对象检测模块:
FaceDetectorYN 升级以获得更好的性能、准确性和面部标志支持;
基于 ArUco 代码的新 QR 代码检测算法;
条形码检测器和解码器从 Contrib 移至主存储库;
为所有图形代码(如条形码和 QR 码)引入了通用 API;
QR 码检测和解码管道中的多个错误修复和改进;
更多log参考:https://github.com/opencv/opencv/wiki/ChangeLog#version480
二、安装软件
可以直接拉取最新文件(尚未发布的托管代码),需要自行使用cmake编译,这里我们先省去编译环节(后续再讲),使用已经打包好的版本安装使用。
双击上面刚刚下载的安装包“opencv-4.8.0-windows.exe”(7z自解压文件),解压到比如我这里的“D:\OpenCV\OpenCV4.8.0”目录下即可。
然后看看编译好的dll文件:D:\OpenCV\OpenCV4.8.0\opencv\build\x64\vc16\bin
这里核心文件打包成了一个opencv_world480.dll和opencv_world480d.dll(调试版),如果你觉得引用麻烦就可以直接用这一个文件即可。
大部分时候,我们可能需要单独打包,再单独引用,这样的话文件数目很多,但是灵活性更高点,适合高阶用户使用。
这里,说明下VC16是VS2019的版本,VC17是VS2022的版本,同时也适用于vs2019以上的版本。
接下来为了后续程序直接可以运行,无需拷贝相关dll,我们可以把路径做到运行时中:
这里不管是系统的还是用户的都可以,随便选择一个即可,我这里添加到用户的运行时:
新建用户变量:
并添加到用户运行时:
配置大功告成,这步的目的是无需拷贝dll到每个工程下,直接全局引用。
三、配置VS环境
这里我们安装VS2022 C++来进行验证环境,创建新项目,选择“语言”为C++,平台为“Windows”,项目类型为“控制台”,然后选中“控制台应用”,项目名称自定义,位置自定义,然后点击“创建”即可。
然后进入工程后,名称上右键,打开属性,找到“VC++目录”设置如下:
然后进入”链接器“->”输入“,附加依赖项,添加引用的符号库(导入库):
编译没有任何错误即可。
四、验证安装结果
测试代码:
- #include <iostream>
- #include <opencv2/opencv.hpp>
- int main()
- {
- cv::Mat img = cv::imread("E:\\lena.jpg");
- cv::namedWindow("lena", cv::WINDOW_FREERATIO);
- cv::imshow("lena", img);
- cv::waitKey();
- cv::destroyAllWindows();
- }
复制代码 需要注意的是,末尾的"cv::waitKey();"必须加上,否则程序直接执行结束,你是看不到窗口的。以上代码在VS2022企业版17.6.5版本测试通过。
也可以提取出命名空间,声明后直接使用函数,无需每个函数前面加上cv::作用域了。
- #include <iostream>
- #include <opencv2/opencv.hpp>
- using namespace cv;
- int main()
- {
- Mat img = imread("E:\\lena.jpg");
- namedWindow("lena", WINDOW_FREERATIO);
- imshow("lena", img);
- waitKey();
- destroyAllWindows();
- }
复制代码
最后的效果如下:
加载的图片下载位置:https://www.51halcon.com/forum.php?mod=viewthread&tid=4631
1.imread(图像路径,读取模式) //以模式读取指定路径下的图像
读取模式定义:
- enum ImreadModes {
- IMREAD_UNCHANGED = -1, //按原样返回加载的图像(带有alpha通道,否则会被裁剪),忽略EXIF方向
- IMREAD_GRAYSCALE = 0, //转换图像到单通道的灰度图
- IMREAD_COLOR = 1, //(默认)将图像转换为3通道BGR彩色图像
- IMREAD_ANYDEPTH = 2, //当输入具有相应深度时,返回16位/32位图像,否则将其转换为8位
- IMREAD_ANYCOLOR = 4, //图像以任何可能的颜色格式读取
- IMREAD_LOAD_GDAL = 8, //使用GDAL驱动程序加载图像
- IMREAD_REDUCED_GRAYSCALE_2 = 16, //将图像转换为单通道灰度图像,图像尺寸缩小1/2
- IMREAD_REDUCED_COLOR_2 = 17, //将图像转换为3通道BGR彩色图像,图像尺寸缩小1/2
- IMREAD_REDUCED_GRAYSCALE_4 = 32, //将图像转换为单通道灰度图像,图像尺寸缩小1/4
- IMREAD_REDUCED_COLOR_4 = 33, //将图像转换为3通道BGR彩色图像,图像尺寸缩小1/4
- IMREAD_REDUCED_GRAYSCALE_8 = 64, //将图像转换为单通道灰度图像,图像尺寸缩小1/8
- IMREAD_REDUCED_COLOR_8 = 65, //将图像转换为3通道BGR彩色图像,图像尺寸缩小1/8
- IMREAD_IGNORE_ORIENTATION = 128 //不根据EXIF的方向标志旋转图像
- };
复制代码
2.namedWindow(窗口名称,窗口模式)
窗口模式定义:
- enum WindowFlags {
- WINDOW_NORMAL = 0x00000000, //用户可以调整窗口大小(没有限制),也可以将全屏窗口切换到正常大小
- WINDOW_AUTOSIZE = 0x00000001, //(默认)用户不能调整窗口大小,大小受显示图像的限制
- WINDOW_OPENGL = 0x00001000, //支持OpenGL的窗口
- WINDOW_FULLSCREEN = 1, //将窗口改为全屏
- WINDOW_FREERATIO = 0x00000100, //图像尽可能扩大(无比例限制)
- WINDOW_KEEPRATIO = 0x00000000, //遵循图像的比例
- WINDOW_GUI_EXPANDED=0x00000000, //状态栏和工具栏
- WINDOW_GUI_NORMAL = 0x00000010, //旧时尚的方式
- };
复制代码
|