一、图像显示
说明:用imread函数载入到新版本的图像存储数据结构Mat类(后期会详细介绍)中,然后用imshow函数显示即可。
#include<opencv2/opencv.hpp> using namespace cv; int main() { //载入图片 Mat src = imread("D:\\12.jpg"); //显示图片 imshow("原始图", src); waitKey(0); }
二、图像腐蚀:腐蚀即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。
说明:程序首先载入和显示一幅图像,然后定义一个Mat类型的变量来获取 getStructuringElement函数的返回值,这个函数发返回值指的是定性质和尺寸的结构元素。调用erode()函数进行图像腐蚀操作。
//进行腐蚀操作 Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); Mat dstImage; erode(src, dstImage, element); imshow("效果图", dstImage);
三、图像模糊:对图像进行均值滤波操作,模糊一幅图像。
//进行均值滤波操作 Mat dstImage; blur(src, dstImage, Size(7, 7)); imshow("均值滤波", dstImage);
四、canny边缘检测
说明:载入图像之后,将图像转化成灰度图,再用blur函数进行图像模糊以降噪,如何用canny函数进行边缘检测
#include<opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp>//opencv highgui模块头文件 #include<opencv2/imgproc/imgproc.hpp>//图像处理头文件 using namespace cv; int main() { //载入图片 Mat src = imread("D:\\12.jpg"); //显示图片 imshow("原始图", src); Mat dstImage, edge, grayImage;//参数定义 //创建与src同类型和大小的矩阵 dstImage.create(src.size(), src.type()); //将原始图转化为灰度图 cvtColor(src, grayImage, COLOR_BGR2GRAY); imshow("灰度图", grayImage); //使用3x3内核来降噪 blur(grayImage, edge, Size(3, 3)); //运行Canny算子 Canny(edge, edge, 3, 9, 3); //显示效果 imshow("边缘检测效果图", edge); waitKey(0); }
五、读取并播放视频
说明:通过对VideoCapture类的分享,可以发现利用它读入视频的方法一般有以下两种
(1)先实例化再初始化
VideoCapture capture; capture.open("1.avi"); 类似:int a; a=1;
(2)在实例化的同时进行初始化
VideoCapture capture("1.avi"); 类似:int a=1;
当视频读入到VideoCapture类对象之后,紧接着可以用一个循环将每一帧显示出来
while(1) { //定义Mat变量,存储每一帧的图像 Mat frame; //读取当前帧 capture>>frame; //显示当前帧 imshow; //延时30ms waitKey(30); }
程序源码:
#include<opencv2/opencv.hpp> using namespace cv; int main() { //读入视频 VideoCapture capture("D:\\1.mp4"); //循环显示每一帧 while (1) { //定义Mat变量,存储每一帧的图像 Mat frame; //读取当前帧 capture >> frame; //显示当前帧 imshow("读取视频", frame); //延时30ms waitKey(30); } return 0; }