二、OpenCV自学笔记:图片的显示、腐蚀、模糊、边缘检测

一、 运行环境

我这里是Visual studio 2015 + OpenCV 4.0.1,OpenCV3以上的应该都可以。

二、 代码示例

1. 显示

//显示一张图片
void showImg()
{
	const char* ImgPath = "AWVS1455.JPG";
	const char* WindowName = "原图";
	Mat img = imread(ImgPath);

	if (img.empty())
	{
		cerr << "Read img file error !" << endl;
		system("pause");
		return;
	}
	//图片较大时可使用该函数设置窗口显示属性,因为默认属性可能导致图片显示不全
	namedWindow(WindowName, WINDOW_NORMAL);
	
	imshow(WindowName, img);
	waitKey(0);
}

2. 腐蚀

//腐蚀一张图片
void ErodeImg()
{
	const char* ImgPath = "2468.png";
	const char* WindowName1 = "原图";
	const char* WindowName2 = "效果图";
	Mat SourceImage = imread(ImgPath);

	if (SourceImage.empty())
	{
		cerr << "Read img file error !" << endl;
		system("pause");
		return;
	}
	imshow(WindowName1, SourceImage);

	//该函数构造并返回可进一步传递给#腐蚀、#膨胀或#morphologyEx的结构化元素。也可以自己构造一个任意的二进制掩码,并将其用作结构化元素。
	Mat element = getStructuringElement(MORPH_ELLIPSE, Size(10, 10));

	Mat ResultImage;
	erode(SourceImage, ResultImage, element);//使用指定的结构元素对源图像进行腐蚀

	imshow(WindowName2, ResultImage);
	waitKey(0);
}

3. 模糊

//模糊一张图片
void BlurImg()
{
	const char* ImgPath = "1357.jpg";
	const char* WindowName1 = "原图";
	const char* WindowName2 = "效果图";
	Mat SourceImg = imread(ImgPath);

	if (SourceImg.empty())
	{
		cerr << "Read img file error !" << endl;
		system("pause");
		return;
	}
	//图片较大时可使用该函数设置窗口显示属性,因为默认属性可能导致图片显示不全
	imshow(WindowName1, SourceImg);
	Mat ResultImg;
	//
	blur(SourceImg, ResultImg, Size(5, 5));
	imshow(WindowName2, ResultImg);

	waitKey(0);
}

4. Canny边缘检测

//Canny边缘检测
void cannyImg()
{
	//1. 载入原图
	Mat srcImg = imread("1357.jpg");//读取原图
	imshow("【原始图】Canny边缘检测", srcImg);//显示原图
	Mat dstImage, edge, grayImage;//参数定义

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

	//3. 将原图像转换为灰度图像
	cvtColor(srcImg, grayImage, COLOR_BGR2GRAY);

	//4. 使用 3x3 内核来降噪
	blur(grayImage, edge, Size(3, 3));

	//5. 运行Canny算子
	Canny(edge, edge, 3, 9, 3);

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

	waitKey(0);
}

5. 然后main函数 

int main(int argc, char* argv[])
{
	cannyImg();
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值