OpenCV笔记(七)

来源:互联网 发布:程序员入门 编辑:程序博客网 时间:2024/06/09 16:24

腐蚀:将高亮部分缩小

膨胀:将高亮部分扩大

#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()中参数为0if(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);}


0 0