OpenCV(C++版)入门
一般来说大家看到一门新的知识都会很迷茫,也不知道该从哪下手,也不知道用什么软件,然后今天我来写一个OpenCV的入门,给大家开个头,看完这个开头之后基本也就知道应该怎么学OpenCV了。
实际上Opencv就是一个有关视觉处理的库,就和学C语言的时候用的math、time那一堆库一样,学习一个库的流程其实就是:
1.了解这个库是干什么的
2.学习这个库自带的一些函数应该如何使用,以及这些函数有什么效果
3.学了多个函数之后,通过对这些函数进行组合来实现一些复杂的功能。
强调一下这篇文章讲的是在Windows上C++语法的OpenCV,接下来的教程也是讲C++语法,不是python的。
然后说一下用什么软件来进行OpenCV的开发,一般的配置就是使用VS配置一个opencv的库来进行学习,下面附上所需的安装包链接。
VS2019 提取码:5162
Opencv-4.1.0提取码:n7lz
注意一下opencv的语法是有变革的,由开始的2到3,现在又更新到了4。其中3和4的语法大致相同,2和3在某些函数的参数上有一定的区别,所以在移植代码的时候,如果移过来发现报错,有可能是Opencv版本不一样,到时候改一下报错函数的参数就可以了。
安装的过程分四步:
1.装VS2019
2.装Opencv的库
3.把Opencv的库放到环境变量里
4.在VS里建一个工程,把这个工程连接上Opencv的库
具体步骤给大家一个我以前配的时候用的链接(步骤有些繁琐,我就不自己写了……)VS2019配置Opencv教程
因为是入门,所以先讲以下五个内容,都是些比较简单的函数,而且很有趣。
1.展示图片
2.灰度图片
3.模糊图片
4.边缘检测
5.保存图片
在进行操作之前,我们需要先放一张图片到自己新建的工程处,一我这个为例,我新建的工程是OpencvTest1,我找到这个工程main.cpp所在的路径,放了一张bilibili.jpg到这个地方。
1.展示图片
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("bilibili.jpg");
imshow("lalala",src);
waitKey(0);
return 0;
}
效果:出现一个小黑框和一张图片。
下面我们能来解释这段代码的内容。
#include <opencv2/opencv.hpp>
#include <iostream>
这两句话是分别引入opencv的库和c++的标准库
using namespace std;
using namespace cv;
这两句是引入工作空间,std是c++标准库的工作空间名,cv是opencv的工作空间名。
(工作空间的目的是避免 如果两个库有相同的函数名,在调用函数时发生冲突,
上文这两个库里没有重复的函数名,所以直接引入工作空间不会有影响。)
int main()
{
Mat src = imread("bilibili.jpg");
imshow("lalala",src);
waitKey(0);
return 0;
}
//这一段是主函数。
Mat src = imread("bilibili.jpg");//其实是两条语句合在一起。分别为:
Mat src;//定义一个Mat类型的变量,变量名是src
src = imread(