关于opencv环境搭建,可以参考这篇博客,安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置.我的电脑是win10系统,编译环境是vs2019,安装的opencv版本是4.11。
这里给大家解决一个很棘手的问题,对于vs2019,属性管理器中没有users配置,也就是说,无法配置好后,每次创建项目都能采用上次项目的属性设置。我的解决方案是:首先建立一个空项目,加上源文件,先配置好opencv的环境,依赖项,库文件等等,然后在属性管理器中找到添加新项目属性表,将当前的项目属性保存起来。这样,以后每次新建项目时,在属性管理器中找到添加现有属性表,将之前保存的项目属性设置载入到工程文件中。当然,如果有大佬有更好的意见,情您提出。
另外要声明一点的是,不知是我个人电脑原因(dellG3),还是配置问题,环境搭建完毕后一般会报错x64和x86不兼容,这时需要我们将配置管理器的debug和release都改为x64,可能是因为4.11版本的opencv只支持32位系统?不太清楚具体原因,但这样设置过后应该就不会存在问题了。
接下来上干货了!
这里的头文件有一个很方便的标准格式
#include
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
对于不同版本的opencv,include的内容肯定是不一样的,关联头文件时还需特别注意,另外,后面的几课中用到了不同的库函数,头文件也会有所不同,到时我会在文章中详细给出说明。
在opencv库中,图像相当于一个新的数据结构,其定义方式为Mat。图片读入的库函数为imread(“文件名”,文件参数);
举个例子
Mat image1 = imread("dota.jpg", 0); //这里的文件参数flags=0,载入dota.jpg的灰度图
Mat image2 = imread("dota.jpg", 199);//值大于0,载入dota.jpg的3通道的彩色图像
Mat logo = imread("dota_logo.jpg");//不考虑flags时,载入dota.jpg的3通道的彩色图像
这些个语句相当于将.jpg文件当做一个数据,赋值给Mat定义的变量。对于参数flags总结如下:
flags >0返回一个3通道的彩色图像。
flags =0返回灰度图像。
flags <0返回包含Alpha通道的加载的图像。
有关通道灰度的内容后面的课程会涉及到,现在记住就行了。
这里的内容比较简单,实例代码如下
namedWindow("游戏原画");//创建窗口
imshow("游戏原画", img);//在指定窗口显示图像
imwrite("文件名.jpg",img);//输出图片数据img到文件
注意:
namedWindow函数中第一个参数为窗口名称,后面其实还有一有个参数。
此处不填则取默认值WINDOW_AUTOSIZE,窗口大小会自动调整以适应所显示的图像,并且不能手动改变窗口大小。
WINDOW_NORMAL设置了这个值,用户便可以改变窗口的大小(没有限制)
WINDOW_OPENGL 如果设置了这个值的话,窗口创建的时候便会支持OpenGL。
对于我的编译环境来说,这里的其他参数填写后运行会报错,报错位置在opencv的源文件中,尚不清楚原因,希望有大神解答一下
imshow函数参数分别为:显示图像的窗口名,显示图像的变量名。
imwrite函数参数分别为:输出的文件名称,输出图像的变量名。
看完介绍是不是感觉很简单呢,附上代码,去测试一下吧
#include
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
int main()
{
// 读入一张图片(游戏原画)
Mat img = imread("pic.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画", img);
imwrite("pic1.jpg",img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
初学opencv,如有错误地方欢迎各位大神批评指正!