opencv3 图像腐蚀例程解析

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
	Mat s = imread("E:/hh.jpg",IMREAD_GRAYSCALE);
	namedWindow("tuxiang", CV_WINDOW_NORMAL);
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstImage;
	erode(s, dstImage, element);
	imshow("tuxiang", dstImage);
	waitKey(0);
	return 0;
}

ps:笔者水平有限,如有发现错误或者行文建议,麻烦各位指点,感谢感谢。

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

注意点1

将include下的两个文件夹以及include文件夹本身共三个文件夹全部放进包含目录。

库目录选择vc14还是vc15要看安装的visual stdio的版本,由于是vs2015版本,所以选择v14。其他的如vc9需要vs2008版本或者更高,vc11需要vs2012版本或者更高。

在选择x86的时候,#include会出现红色波浪线,改成x64即可。虽然写的是x86,但其实是应用于32位系统。x64对应于64位系统。

 

using namespace cv;

注意点2

cv是一个已经编写好的命名空间,是为了防止出现命名重复而出现的,类似的还有std。

 

Mat s = imread("E:/hh.jpg",IMREAD_COLOR);

注意点3

imread()函数,加载图像。

第一个参数为图像名称,这里用了绝对路径防止出错。

第二个个是图像类型。比如grayscale等。

 

namedWindow("tuxiang", CV_WINDOW_NORMAL);

注意点4

建立一个窗口,控制图像大小,如果只是读取的话,遇到分辨率太高的图片,屏幕会装不下。

 

Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstImage;
	erode(s, dstImage, element);

注意点5

第一步mat element 是为erode()函数确定内核。

getstructelement()函数

第一个参数是内核形状,rect,矩形。

第二个参数是内核的尺寸,从腐蚀效果来看,尺寸越大,图片会相对暗一些。因为erode()函数工作时,将会选择内核范围内的最小值(也就是最“暗”值)代替所有值,范围越大,相对最小值出现的概率越高。腐蚀对特别亮的地方影响不大,但对比较暗的地方效果会比较明显。

第三个参数是锚点位置,这里省略,默认为矩形的中心点。

erode()函数

第一个参数是输入图像,即想要出现腐蚀效果的图像。

第二个参数是输出图像。

第三个参数是内核。如果之前没有进行定义,默认是一个简单的3*3矩阵。

 

imshow("tuxiang", dstImage);
	waitKey(0);
	return 0;

注意点6

imshow()函数,就是“image show”。

第一个参数窗口名称。

第二个参数图片名称。

waitkey()函数必须写!!因为程序执行太快了,而我们必须停下来检查结果是否正确。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值