OpenCV是计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法。是Intel公司贡献出来的,俄罗斯工程师贡献大部分C/C++代码。官网:https://opencv.org/ 从这里 https://opencv.org/releases.html 你可以下载到自己想要的版本!
环境搭建
本人使用的时VisualStudio2015+OpenCV3.4.1-vc14(vc14对应的VisualStudio版本就是VS2015),配置环境变量,根据自己的路径来配置
测试环境
新建VS空项目,注意是改为X64
的解决方案,因为直接下载的exe实际上就是一个自解压文件,里面的库都是在X64的环境下编译好的,如何编译自己的VS对应的OpenCV参考:https://www.bilibili.com/video/av17968786,根据自己的路径配置即可!
包括头文件
D:\opencv3.4\build\include
D:\opencv3.4\build\include\opencv
D:\opencv3.4\build\include\opencv2库文件
D:\opencv3.4\build\x64\vc14\lib链接器-附加依赖项
opencv_world310d.lib
注意自己的图片路径,如果其他代码与图片所示一致,那么恭喜你的OpenCV开发环境搭建OK了!
图像有关的API
加载图像cv::imread
imread功能是加载图像文件成为一个Mat对象(什么是Mat对象接下来的文章中将会说到)
第一个参数表示图像文件名称(路径)
第二个参数,表示加载的图像是什么类型,支持常见的三个参数值
- IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变
- IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来
- IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来
注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载
例如加载灰度图:
显示图像 cv::namedWindos 与cv::imshow
namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,无需手动销毁它。
常见用法namedWindow(“窗口标题”, WINDOW_AUTOSIZE)
- WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
- WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
imshow根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象
修改图像 (cv::cvtColor)
cvtColor的功能是把图像从一个彩色空间转换到另外一个色彩空间,有三个参数,第一个参数表示源图像、第二参数表示色彩空间转换之后的图像、第三个参数表示源和目标色彩空间如:COLOR_BGR2HLS 、COLOR_BGR2GRAY 等
这是原图转换为COLOR_BGR2HLS色彩空间:
这是原图转换为COLOR_BGR2GRAY 色彩空间:
有时容易出现这样的错误
这个问题一般是由于将已经是灰度图的图片继续转为灰度图时引起的,所以在读取图片转为灰度色彩空间的时候要保证读取到的原图是彩色图像,如果使用灰度图的参数读取那么再次灰度化的时候就会抱这种错误!
保存图像(cv::imwrite)
保存图像文件到指定目录路径,只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存,保存PNG格式的时候可以保存透明通道的图片可以指定压缩参数!