《OpenCV3编程入门》学习 第一章 邂逅OpenCV

1. 快速上手OpenCV图像处理

1.1 图像显示

实例代码:

#include //OpenCV头文件包含
using namespace cv;//命名空间

int main()
{
	Mat img = imread("D:/practice/opencv3/imge/1.jpg");//读入图片
	imshow("窗口", img);//显示图片,第一个为窗口名字,第二个为保存图片的Mat变量
	waitKey(3000);//图片显示,单位为毫秒  
				  //如果里面是3000,图片则会显示3秒,然后自动关闭;如果是0,图片则会一直显示
}

运行结果:

1.2 图像腐蚀

示例代码:

#include//opencv highgui模块头文件
#include//opencv 图像处理头文件
using namespace cv;//命名空间

int main()
{
	//读取图片
	Mat srcImage=imread("D:/practice/opencv3/imge/1.jpg");
	//显示原图片
	imshow("原始图片", srcImage);

	//进行腐蚀操作
	Mat element = getStructuringElement(MORPH_RECT,Size(15, 15));
	Mat dsImage;
	erode(srcImage, dsImage, element);
	imshow("腐蚀之后的图片", dsImage);
	waitKey(0);
}

运行结果:

1.3 图像模糊

示例代码:

#include
#include

using namespace cv;

//图像模糊:利用均值滤波,对图像进行模糊操作
int main()
{
	//读入图片
	Mat srcImage = imread("D:/practice/opencv3/imge/1.jpg");
	//显示原始图片
	imshow("原始图片", srcImage);

	//进行均值滤波操作
	Mat dsImage;
	blur(srcImage, dsImage, Size(20,20));
	imshow("模糊后图片", dsImage);
	waitKey(0);
}

运行结果:

1.4 canny边缘检测

示例代码:

#include
#include

using namespace cv;

//图像边缘检测:首先载入图像,再将其转换为灰度图,再用blur函数对图像进行降噪处理,
//最后调用Canny算子对图像进行边缘检测
int main()
{
	//读入图片
	Mat srcImage = imread("D:/practice/opencv3/imge/1.jpg");
	//显示原始图片
	imshow("1.原始图片", srcImage);

	//参数定义
	Mat dstImage, edge, grayImage;
	//创建与srcImage同类型和大小的矩阵dstImage
	dstImage.create(srcImage.size(), srcImage.type());
	//将原图转换为灰度图像
	cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
	//显示灰度图像
	imshow("2.灰度图像", grayImage);

	//先使用3x3内核降噪
	blur(grayImage, edge, Size(3, 3));
	//运行Canny算子
	Canny(edge, edge, 3, 9, 3);
	//显示边缘检测图像
	imshow("3.边缘检测图像", edge);
	
	waitKey(0);
}

运行结果:


2. OpenCV视频操作基础

2.1 读取并播放视频

示例代码:

#include
using namespace cv;
int main()
{
	//读入视频
	VideoCapture capture("D:/practice/opencv3/imge/luming.mp4");
	//循环显示每一帧
	while (1)
	{
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("读取视频", frame);//显示当前帧
		waitKey(30);//延时30ms
	}
	return 0;
}

运行结果:
《OpenCV3编程入门》学习 第一章 邂逅OpenCV_第1张图片

2.2 调用摄像头采集图像

示例代码:

#include
using namespace cv;
int main()
{
	//读入视频
	VideoCapture capture(0);//只需要将这里的文件名改为0,就表示调用摄像头
	//循环显示每一帧
	while (1)
	{
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("读取视频", frame);//显示当前帧
		waitKey(30);//延时30ms
	}
	return 0;
}

运行结果:
《OpenCV3编程入门》学习 第一章 邂逅OpenCV_第2张图片

2.3 对视频进行边缘检测

示例代码:

#include
using namespace cv;
int main()
{
	//读入视频
	VideoCapture capture(0);//只需要将这里的文件名改为0,就表示调用摄像头
	Mat edge;
	//循环显示每一帧
	while (1)
	{
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		imshow("1.读取视频", frame);//显示当前帧

		//将原始图像转换为灰度图
		cvtColor(frame, edge, COLOR_BGR2GRAY);
		//使用3x3内核降噪(2x3+1=7)
		blur(edge, edge, Size(7, 7));
		//进行Canny边缘检测并显示
		Canny(edge, edge, 0, 30, 3);
		imshow("2.边缘检测后的视频", edge);
		if (waitKey(30) > 0) break;
	}
	return 0;
}

运行结果:

你可能感兴趣的:(opencv学习,opencv,计算机视觉,学习)