相关知识

开闭操作:

1.开操作(先腐蚀后膨胀)

作用:消除小物体;在纤细处分离物体;平滑较大的边界并不明显改变其面积;

2.闭操作(先膨胀后腐蚀)

3.顶帽:(原图像➖开运算)

4.黑帽:(闭运算➖原图像)

opencv窗口白色自动关闭 opencv 开闭操作_#include


(内容较多,内容很全,回顾)
#include “stdafx.h”
//内容
1.形态学操作中的:腐蚀/膨胀/开闭操作/顶帽黑帽及相关API
2.简单图片叠加
3.水平提取与垂直线提取

功能
:好像可以取出图片中的杂点,怎么说,特征提取?或者验证码提取?下次回顾时再体会把!
!!!!!回顾注意事项:请自己看程序后的注释**!!!!**

#include <opencv2/opencv.hpp>
 #include 
 using namespace std;
 using namespace cv;Mat src, dst,asd,sdf,src2,src3,src4;
 char output_title[] = “形态学操作”;int main(int argc, char**argv)
 {
 src = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/提取.png”); //存放自己图像的路径
 //src2 = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/气质5.jpg”);
 if (!src.data)
 {
 printf(“could not load image…\r\n”);
 return -1;
 }
char input_title[] = "原图";
char output_title[] = "形态学操作";

namedWindow(input_title, CV_WINDOW_AUTOSIZE);
//namedWindow(output_title, CV_WINDOW_AUTOSIZE);
imshow(input_title, src);
//imshow("图二", src2);
//Mat kernel = getStructuringElement(MORPH_RECT,Size(11,11),Point(-1,-1));  //创建结构元素
//morphologyEx(src,dst,CV_MOP_TOPHAT,kernel);    //形态学操作API函数--顶帽
//morphologyEx(src, asd, CV_MOP_OPEN, kernel);   //形态学操作API函数--开操作
//addWeighted(src,0.5,src2,0.5,0,sdf);        //图片叠加,注意两张图size和type要一样(否则报错)
cvtColor(src,src2,CV_BGR2GRAY);
//bitwise_not(src2, src2);
adaptiveThreshold(src2,src3,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,11,3);
//bitwise_not(src3,src3);
//blur(src3,src4,Size(3,3),Point(-1,-1));
//imshow(output_title, src);
//imshow("顶帽操作",asd);
Mat hline = getStructuringElement(MORPH_RECT,Size(src.cols/16,1),Point(-1,-1)); //水平结构元素
Mat vline = getStructuringElement(MORPH_RECT,Size(1,src.rows/16),Point(-1, -1)); //垂直结构元素
Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3 ), Point(-1, -1));
Mat zj;
//erode(src3,zj,kernel);       //1.开操作
//dilate(zj,src4,kernel);
                        //两者操作主要看生成的二值化图,灵活运用膨胀和腐蚀,
                        //才能很好消除需要虑掉的杂质。
dilate(src3, zj, kernel);       //2.闭操作
erode(zj, src4, kernel);
//bitwise_not(src4, src4);   //灵活运用背景转换功能(简单讲就是白底黑字变黑底白字)可方便二值化后的处理
imshow("灰度图", src2);
imshow("二值化", src3);     //要保证虑的干净,二值化图中主体就应该鲜明,这样腐蚀膨胀的处理区域就小,结果更好
imshow("结果图", src4);    
//imshow("二值化+模糊", src4);
//imshow("顶帽和开操作的混合",sdf);

waitKey(0);
destroyAllWindows();
return 0;

}

opencv窗口白色自动关闭 opencv 开闭操作_opencv_02


补充

1.膨胀腐蚀的原理:卷积的最大值(膨胀)或最小值(腐蚀)

----1)膨胀

opencv窗口白色自动关闭 opencv 开闭操作_二值化_03


----2)腐蚀

opencv窗口白色自动关闭 opencv 开闭操作_计算机视觉_04


参考文章:膨胀于腐蚀及其一些形态学操作的原理 2.补充:膨胀腐蚀都是以白色区域作为主体,即:膨胀-白色区域变大;腐蚀-白色区域变小;