1 简介
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。 OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。 OpenCV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。 OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。 OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。 OpenCV 是一个开源的计算机视觉库,可以从 http://opencv.org 获取。 1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。 OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。 OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。 Itseez 是俄罗斯的一家视觉公司,专门从事计算机视觉算法。2016 年 5 月,英特尔收购该公司,以“帮助英特尔的用户打造创新型深度学习的 CV 应用,如果自动驾驶、数字安全监控和工业检测”(英特尔物联网总经理 Doug Dacies 如此说)。 OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。 OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。 OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产品质量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。 因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。 采用BCD许可
2 安装vs2022
Win10的64位操作系统,直接在VS官网下载VisualStudioCommunity,默认安装,安装的是VisualStudioCommunity2022:
(安装的【工作负载】步骤时选的是【使用C++的桌面开发】和【通用Windows平台开发】和其它工具集中的【VisulStudio扩展开发】)
3 OpenCV4.5.5下载
下载地址https://opencv.org/releases/
4 解压OpenCV环境变量
cmd -> sysdm.cpl
5 Visual Studio2022配置OpenCV
5.1打开visual studio 2022创建新项目,选择C++控制台应用
5.2 添加项目属性表.
为了方便使用,我们还可以通过添加属性表的方式,配置OpenCV的属性,属性表就是props文件。每次新建项目之后,只需要将属性表放到项目路径下,并添加到项目中就可以使用了,而不需要重复去配置OpenCV的属性。避免了重复去配置OpenCV的属性和切换编译模式得到麻烦,自行选择。
找到自己对应的Debug和Release模式,比如说我目前想使用x64的Debug,我就选择第二项,单击右键选择“添加新项目属性表”。
打开已有的VS项目,在左下角-属性管理器-DeBug|X64中右键-添加新项目属性表。然后设置名字如:Debug_x64_opencv.props并保存。
属性表文件是保存在项目文件夹中的,下次要用的时候,直接复制、粘贴到新建的项目文件夹中去,并添加到项目属性管理器中就可以了,很方便。 配置完OpenCV属性之后,就可以开始使用OpenCV了。最好是把属性表保存在一个固定的路径中,方便复制、粘贴,使用在下一个项目中。添加属性表也很简单,先把属性表复制、粘贴到当前项目的项目文件夹中,然后打开“属性管理器”,找到对应的“模式”和“位数”,这里是“Debug|x64”,然后点击鼠标右键选择“添加现有属性表”,把复制、粘贴好的属性表文件添加进来就可以了。
5.3 配置属性表
右键刚刚添加的属性表,点击属性。点击VC++目录中的包含目录,添加到我们的包含目录中 F:\soft\bin\opencv\opencv\build\include\opencv2 F:\soft\bin\opencv\opencv\build\include(少了这个VS会报错但是能运行)
VC++目录中的库目录,添加到我们的库目录中
在“通用属性-链接器-输入-附加依赖项”中添加%opencv%\build\x64\vc15\lib\opencv_world451d.lib,%opencv%为你自己的opencv目录。不同版本的该文件名称不同,只需要将自己版本的opencv文件夹中该文件名填入即可。要注意一定要是****d.lib,因为只有d.lib才对应的是dubug版本 或者 所有选项 -> 附加依赖项
6 测试
运行的时候一定要选择DeBug|x64、
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat image = Mat::zeros(300, 600, CV_8UC3);
circle(image, Point(300, 200), 100, Scalar(0, 255, 120), -100);
circle(image, Point(400, 200), 100, Scalar(255, 255, 255), -100);
imshow("show window", image);
waitKey(0);
return 0;
}
7 在新的项目中快速配置
在新的项目中,只需要在属性管理器中,右键DeBug|x64-添加现有属性表-选择刚刚我们配置好的属性表Debug_x64_opencv.props即可快速完成配置
附:配置Release模式 刚刚我们配置的只能在DeBug|x64中运行,下面我们配置Release|x64的属性表,可以在Release|x64中运行。
在属性管理器中,右键Release|x64-添加新项目属性表。然后设置名字如:Release_x64_opencv.props并保存。 右键点击新创建的属性表-属性,在“通用属性-VC++目录-常规-包含目录”和“通用属性-VC++目录-常规-库目录”中的设置与上文相同。 在“通用属性-链接器-输入-附加依赖项”中添加%opencv%\build\x64\vc15\lib\opencv_world451.lib,%opencv%为你自己的opencv目录。不同版本的该文件名称不同,只需要将自己版本的opencv文件夹中该文件名填入即可。要注意一定要是****.lib,因为只有.lib才对应的是Release版本 4. 点击确认保存属性表,并进行测试。运行的时候一定要选择Release|x64 在新的项目中,只需要在属性管理器中,右键Release|x64-添加现有属性表-选择刚刚我们配置好的属性表Release_x64_opencv.props即可快速完成配置 至此DeBug和Release下OpenCV都配置完毕,并且在新的项目中也可以快速完成配置
8 可能遇到问题
问题1:计算机中丢失msvcp120.dll
出现这个问题,重新下载一下msvcp120.dll,然后添加到对应bin文件夹中,也就是上面添加的环境变量,这两个dll已上传到百度云,请自行下载。
百度网盘链接:https://pan.baidu.com/s/1CLnom87fShhl7wF4yAKggw 提取码:28a7
问题2:计算机中丢失opencv_highgui2413d.dll
出现这个问题,一般就是环境变量没有添加对(路径问题)或者添加完环境变量之后没有重启电脑使环境变量生效。
问题3:应用程序无法正常启动,如下图所示: 没有将bin文件路径添加到环境变量中,还需要重启。
问题4:出现以下错误,不支持接口,主要情况为:摄像头打不开或者等到“不支持接口”完了之后才能打开 这个问题,打开摄像头时,一直返回false,有时还提醒选择视频格式FFMPEG,可能是OpenCV被破坏了,可以使用另外一个版本的OpenCV来进行测试,我目前使用的opencv342,有可能坏了,我就用好的opencv2410来测试,发现摄像头可以打开,重新下一个opencv就好了,同时也可以使用DirectX来修复一下dll。
VideoCapture cap(0);
while (cap.isOpened()) 问题5:“CAP_PROP_FRAME_COUNT”: 未声明的标识符 或者“CAP_PROP_FRAME_COUNT”: 不是“cv”的成员 出现这种情况,可能是由于OpenCV版本导致的,OpenCV3可以这样写,但是OpenCV2就需要写成CV_CAP_PROP_FRAME_COUNT
问题6:弹出错误提示框“找不到mfc100”
去360下载微软常用运行库合集,一般360会自动弹出。
|