Open CV 是Open Source Computer Vision Library 的简称,是一个用BSD协议开发源代码的计算机视觉库,最初由Intel 公司开发,并以BSD许可证授权发行,现在由美国Willow Garage 提供主要支持。
Open CV可用于开发实时的图像处理、计算机视觉以及模式识别程序,目前使用十分广泛。
Open CV 官方网站: https://opencv.org/
Open CV 官方文档 : https://docs.opencv.org/master/
Open CV 官方教程: https://docs.opencv.org/master/d9/df8/tutorial_root.html
Open CV 中文站: http://www.opencv.org.cn/forum.php?mod=viewthread&tid=33549
SDK 下载: https://opencv.org/releases.html
关于Open CV的版本采用的是多个大版本一起发布的方式,比如说最开始的是2.3.0版本,然后在2.4.9版本之后,2.4.10 之前推出了3.0.0 Alpha版本,在2.4.X版本更新的同时,3.0.0版本也发布了RC 版及之后的3.X版, 在3.4.4发布时,4.0.0 RC 版本也已发布,目前,最新版本有三个 4.0.1、 3.4.5、2.4.13.6, 但2.4.13.6 已将近一年没有更新了。可以看出Open CV 在发生重要的调整时会发布新的大版本,但之前的大版本仍保留分支,在开发到一定阶段之后,之前的大版本分支就将不再更新,或减少更新。
现在是2019-1-2, 4.X的最新版本是4.0.1, 3.X的最新版本是3.4.5,2.X最可能是最先被放弃的,所以这里选了最新的3.4.5版本。
直接下载Win Pack ,Documentation可以存一个书签,方便查看。 Sources 就不用了,因为Win Pack 里面包含的是一部分bin文件和Source源码。
下载下来的exe 实际上就是一个自解压文件,双击执行选择目录之后解压即可。
解压出来的目录只有build 和 source两个,以及两个开源的license 还有一个readme文件,对于所有的开源项目,这个文件都是必读的,它可以让你走很多弯路。不过这里面似乎没有更多有价值的东西了。
如果你看过网上的其他基于2.3版本的资料,就会发现,这里没有Doc文件夹,并且在build里面也没有x86, 也没有opencv_core 等文件。对于这个问题,因为之前看CEF的时候知道CMakeList文件可以用CMAKE 来生成VS解决方案文件,所以直接就用CMAKE生成了。其实在官网首页上还有一个 教程 选项。
里面有提到使用CMake来生成Open CV 的VS解决方案。但这一点对于新手似乎有点不太容易。
在使用Cmake 生成解决方案时,还有一个隐藏的问题需要处理,也就是VS版本问题,细心的朋友可能注意到了这个地方,SDK 安装包上有vc14 和 vc15 标记, 这其实就是说这个版本的OpenCV需要在VS2015 或者 VS2017 下编译,否则八成是要出问题的。所以在CMake里面也要选择VS2015 或者VS2017,当然你的电脑上必须安装的有这个版本,并且最好是在C盘安装的,否则还需要配置一下环境变量(根据CMake错误提示即可处理)。
在用CMake生成解决方案时,主要目的路径要选一个新的路径,因为当前目录是只读的。
直接用VS 打开解决方案即可。
module下的就是我们要生成的
生成的lib文件在.\lib\Debug下, dll文件在.\bin\Debug 下
而头文件 在 build\include中, 至此, 头文件,lib文件和dll文件都已经到手了,我们可以着手做一个Demo测试一下。这里借鉴一下网上基于2.3的教程:
https://www.cnblogs.com/teafree/p/4095887.html
在VS2015中 新建一个控制台项目, testOpenCV
把我们之前生成的lib,dll 还有build里面的include文件夹都拷贝到工程目录下。
首先把include文件夹添加到包含目录中
然后把lib文件拷贝到工程目录下
这里只用到了三个,所以就拷贝了三个,可以根据实际情况添加自己使用的库,可以看到Open CV 生成的dll有18个,我们同样根据需要添加其中5个到我们的Debug目录
main里面的代码如下:
#include "stdafx.h"
#include "iostream"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#pragma comment(lib,"opencv_core345d.lib")
#pragma comment(lib,"opencv_highgui345d.lib")
#pragma comment(lib,"opencv_imgcodecs345d.lib")
using namespace cv;
int main()
{
std::string windowName = "HelloWorld";
//图像名称
std::string imgFile = "opencv-logo.png";
//读入图像
cv::Mat image = cv::imread(imgFile, CV_LOAD_IMAGE_COLOR);
//如果无法读取图形
if (!image.data)
{
std::cout << "无法打开图像文件" << std::endl;
system("PAUSE");//暂停窗口
return -1;
}
//创建一个新窗口
cv::namedWindow(windowName, CV_WINDOW_AUTOSIZE);
//将图像显示都新创建的窗口中
cv::imshow(windowName, image);
//等待,直到用户按任意键时退出
cv::waitKey(0);
return 0;
}
其中的imgFile 是Open CV的logo图片,你可以换成任意一张图片来测试,图片需要放到当前项目中。
执行的效果如图所示:
示例代码:
https://download.csdn.net/download/u012179109/10891080
如果你对比2.3的例子看的话,就可以发现在3.4.5 版本上已经和2.3版本发生了一些变化,网上的许多资料都已经不太适合新版本。 这篇文章就是希望能给各位新手朋友一点帮助,另外本人也是今天刚接触Open CV,如果有写错的地方,欢迎指针,如果大家有什么问题也可以在评论区交流~~~