相关知识
开闭操作::
1.开操作(先腐蚀后膨胀)
作用:消除小物体;在纤细处分离物体;平滑较大的边界并不明显改变其面积;
2.闭操作(先膨胀后腐蚀)
3.顶帽:(原图像➖开运算)
4.黑帽:(闭运算➖原图像)
(内容较多,内容很全,回顾)
#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;
}
补充:
1.膨胀腐蚀的原理:卷积的最大值(膨胀)或最小值(腐蚀)
----1)膨胀
----2)腐蚀:
参考文章:膨胀于腐蚀及其一些形态学操作的原理 2.补充:膨胀腐蚀都是以白色区域作为主体,即:膨胀-白色区域变大;腐蚀-白色区域变小;