OpenCV笔记(七)

腐蚀:将高亮部分缩小

膨胀:将高亮部分扩大

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
#define WINDOWNAME "1"
using namespace cv;
using namespace std;
int g_type;

int g_cur;
int g_max;
Mat srcImage;
Mat dstImage;
Mat kernel;
void on_call(int,void*){
	kernel=getStructuringElement(MORPH_RECT,Size(g_cur+1,g_cur+1));//自定义kernel,并防止Size()中参数为0
	if(g_type==0){
		erode(srcImage,dstImage,kernel);
	}else{
		dilate(srcImage,dstImage,kernel);
	}
	imshow(WINDOWNAME,dstImage);
}
int main(){
	srcImage=imread("redflo.bmp",1);
	g_cur=1;
	g_max=20;
	g_type=0;
	namedWindow(WINDOWNAME);//有createTrackbar()时不可省略
	createTrackbar("ero/dil",WINDOWNAME,&g_type,1,on_call);
	createTrackbar("kernel",WINDOWNAME,&g_cur,g_max,on_call);
	on_call(0,NULL);

	waitKey(0);
}




#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(){
	Mat srcImage=imread("test.jpg",1);
	imshow("src",srcImage);
	Mat dstImage;
	Mat kernel=getStructuringElement(MORPH_RECT,Size(10,10));

	morphologyEx(srcImage,dstImage,MORPH_ERODE,kernel);//腐蚀
	imshow("erode",dstImage);
	morphologyEx(srcImage,dstImage,MORPH_DILATE,kernel);//膨胀
	imshow("dilate",dstImage);
	morphologyEx(srcImage,dstImage,MORPH_CLOSE,kernel);//闭运算,先膨胀后腐蚀
	imshow("close",dstImage);
	morphologyEx(srcImage,dstImage,MORPH_OPEN,kernel);//开运算,先腐蚀后膨胀
	imshow("open",dstImage);
	morphologyEx(srcImage,dstImage,MORPH_BLACKHAT,kernel);//黑帽,闭运算减去原图
	imshow("blackhat",dstImage);	
	morphologyEx(srcImage,dstImage,MORPH_TOPHAT,kernel);//顶帽,原图减去开运算
	imshow("tophat",dstImage);
	morphologyEx(srcImage,dstImage,MORPH_GRADIENT,kernel);//梯度,膨胀减去腐蚀
	imshow("gradient",dstImage);
	waitKey(0);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值