opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)

一、形态学其他操作(用的不多,如果忘了也可以通过膨胀腐蚀得到相同效果)

1.开运算

2.闭运算

3.形态学梯度

4.顶帽

5.黑帽

 1 #include "opencv2/opencv.hpp"
 2 using namespace cv;
 3
 4 void main()
 5 {
 6     Mat srcImg = imread("E://1.jpg");
 7     Mat dstImg;
 8     Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
 9
10     //morphologyEx(srcImg, dstImg, MORPH_OPEN, element);  //开运算
11     //morphologyEx(srcImg, dstImg, MORPH_CLOSE, element);  //闭运算
12     //morphologyEx(srcImg, dstImg, MORPH_GRADIENT, element);  //形态学梯度运算
13     //morphologyEx(srcImg, dstImg, MORPH_TOPHAT, element);  //顶帽运算
14     morphologyEx(srcImg, dstImg, MORPH_BLACKHAT, element);  //黒帽运算
15
16     imshow("src", srcImg);
17     imshow("dst", dstImg);
18     waitKey(0);
19 }

二、小应用(找出差异,对差异进行操作)

 1 #include "opencv2/opencv.hpp"
 2 using namespace cv;
 3
 4 void main()
 5 {
 6     Mat img1=imread("E://A.jpg");
 7     Mat img2=imread("E://B.jpg");
 8     Mat diff;
 9     absdiff(img1,img2,diff);//用这个做减法可以避免出现负值=0的情况
10     imshow("img1",img1);
11     imshow("img2",img2);
12     imshow("diff",diff);
13
14     Mat gray;
15     cvtColor(diff,gray,COLOR_BGR2GRAY);//转为灰度图
16     //adaptiveThreshold(gray,gray,255,ADAPTIVE_THRESH_GAUSSIAN_C,THRESH_BINARY_INV,15,3);//自适应阈值有点不懂
17     threshold(gray,gray,5,255,THRESH_BINARY);
18     imshow("threshold",gray);
19
20     //进行形态学操作
21     Mat element=getStructuringElement(MORPH_RECT,Size(3,3));//定义结构元素
22     morphologyEx(gray,gray,MORPH_OPEN,element);//开运算
23     medianBlur(gray,gray,9);//中值滤波
24     dilate(gray,gray,element);
25     imshow("dst",gray);
26
27     waitKey(0);
28 }

时间: 2024-08-03 16:35:01

opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)的相关文章

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[opencv]学习之路

参考这个人的教程: 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 2016年9月7日 花了一个早上,才配置好了环境.然后系统有错误就开始崩盘,我也是跟着浅墨大神走的,最后还是女神比较给力,遇见了跟我一样的情况,在她的指导下,走出困境! 基本结构

opencv学习之路(5)、鼠标和滑动条操作

一.鼠标事件 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 6 Mat img(500,500,CV_8UC3,Scalar(255,255,255));//定义成全局变量 7 8 void OnMouse(int event,int x,int y,int flags,void* param){ 9 if(event==CV_EV

opencv学习之路(14)、形态学之膨胀腐蚀(一)

一.膨胀腐蚀概述(对高亮部分进行操作) 二.膨胀 三.腐蚀 四.代码 1.查看结构元素 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 6 void main(){ 7 Mat element=getStructuringElement(MORPH_RECT,Size(5,5)); 8 Mat element2=getStructur

opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形

一.简介 二.外接矩形的查找绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 void main() 4 { 5 //外接矩形的查找绘制 6 Mat srcImg =imread("E://12.jpg"); 7 imshow("src",srcImg); 8 Mat dstImg = srcImg.clone(); //原图备份 9 cvtColor(srcImg, srcIm

[原创]java WEB学习笔记64:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

OpenCV学习之路——车牌识别之车牌定位

去年七月份因为学校项目需要开始接触图像处理,但那时候只是到网上找车牌识别代码,然后加入到自己的项目中,不清楚细节原理. 现在自己重新一步步实现车牌识别. 高斯模糊: 1 Mat Gaussian(Mat &img) { 2 Mat out; 3 GaussianBlur(img, out, Size(3, 3), 4 0, 0, BORDER_DEFAULT); 5 return out; 6 7 } 灰度化: 1 Mat Grayscale(Mat &img) { 2 Mat out;

opencv学习之路(21)、模板匹配及应用

一.模板匹配概念 二.单模板匹配 1 #include "opencv2/opencv.hpp" 2 #include <iostream> 3 using namespace std; 4 using namespace cv; 5 6 void main() 7 { 8 Mat temp=imread("E://mu.jpg"); 9 Mat src=imread("E://lena.jpg"); 10 Mat dst=src.c

opencv学习之路(20)、直方图应用

一.直方图均衡化--equalizeHist() 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 Mat srcImg = imread("E://02.jpg", 0); //以灰度方式打开,需要输入单通道图像 7 imshow("src", srcImg); 8 Mat dstImg; //均衡化后的图像 9 equalizeHist(sr