02 快速上手OpenCV

一、图像显示

操作请看00节,这里只放效果图:
02 快速上手OpenCV_第1张图片

二、图像腐蚀

注:腐蚀,即用图像中的暗色部分“腐蚀”掉图像中高亮部分。
代码:
#include    
#include //OpenCV highgui 模块头文件
#include //OpenCV图像处理头文件
using namespace cv;
int main(int argc, char* argv[])
{
	// 载入一张图片   
	Mat srcImage = imread("1.jpg");
	// 在窗口中显示原画    
	imshow("【原图】腐蚀操作", srcImage);
	//进行腐蚀操作
	Mat element = getStructuringElement(MORPH_RECT, Size(15,15));
	Mat dstImage;
	erode(srcImage,dstImage,element);
	//显示效果图
	imshow("【效果图】腐蚀操作", dstImage);
	// 等待任意按键按下
	waitKey(0);
	return 0;
}

效果:
02 快速上手OpenCV_第2张图片

三、图像模糊

代码:
#include    
#include //OpenCV highgui 模块头文件
#include //OpenCV图像处理头文件
using namespace cv;
int main(int argc, char* argv[])
{
	// 载入一张图片   
	Mat srcImage = imread("1.jpg");
	// 显示原始图    
	imshow("【原图】腐蚀操作均值滤波", srcImage);
	//进行均值滤波操作
	Mat dstImage;
	blur(srcImage, dstImage, Size(7, 7));
	//显示效果图
	imshow("【效果图】均值滤波", dstImage);
	// 等待任意按键按下
	waitKey(0);
	return 0;
}
效果:


四、Canny边缘检测

代码:
#include    
#include //OpenCV highgui 模块头文件
#include //OpenCV图像处理头文件
using namespace cv;
int main(int argc, char* argv[])
{
	//【0】载入原始图  
	Mat srcImage = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	imshow("【原始图】Canny边缘检测", srcImage); 	//显示原始图 
	Mat dstImage, edge, grayImage;	//参数定义

	//【1】创建与src同类型和大小的矩阵(dst)
	dstImage.create(srcImage.size(), srcImage.type());

	//【2】将原图像转换为灰度图像
	cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);

	//【3】先用使用 3x3内核来降噪
	blur(grayImage, edge, Size(3, 3));

	//【4】运行Canny算子
	Canny(edge, edge, 3, 9, 3);

	//【5】显示效果图 
	imshow("【效果图】Canny边缘检测", edge);

	waitKey(0);
	return 0;
}
效果:


五、读取并播放视屏

注释:
VideoCapture capture("1.avi"); 和VideoCapture capture;capture.open("1.avi");是一样的!
类似于int a;a=1;<==>int a = 1;
代码:
#include     
#include 
using namespace cv;
int main(int argc, char* argv[])
{
	//【1】载入视频 
	VideoCapture capture("1.avi");
	//【2】循环显示每一帧
	while (1) {
		Mat frame;	//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("读取视频",frame);//显示当前帧
		waitKey(30);//延时30ms
	}
	return 0;
}
效果:
02 快速上手OpenCV_第3张图片

六、调用摄像头采集图像

VideoCapture capture("1.avi");改成VideoCapture capture(0);就表示调用摄像头了;
效果:
02 快速上手OpenCV_第4张图片

调用摄像头配合canny边缘检测:
代码:
#include     
#include 
using namespace cv;
int main(int argc, char* argv[])
{
	//从摄像头读入视频
	VideoCapture capture(0);
	//定义参数
	Mat edges;
	//循环显示每一帧
	while (1) {
		//【1】读入图像
		Mat frame;	//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		//【2】将原图像转化为灰度图像
		cvtColor(frame, edges, CV_BGR2GRAY);//转化BGR彩色图为灰度图
		//【3】使用3X3内核来降噪(2x3+1=7)
		blur(edges, edges, Size(7, 7));//进行模糊处理
		//【4】进行canny边缘检测并显示
		Canny(edges, edges, 0, 30, 3);
		imshow("被canny后的视频",edges);//显示经过处理后的当前帧
		if(waitKey(30) >= 0) break;//延时30ms
	}
	return 0;
}

效果:
02 快速上手OpenCV_第5张图片

你可能感兴趣的:(【OpenCV】,Opencv入门学习)