opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)
一、形态学其他操作(用的不多,如果忘了也可以通过膨胀腐蚀得到相同效果)
1.开运算
2.闭运算
3.形态学梯度
4.顶帽
5.黑帽
#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat srcImg = imread("E://1.jpg");
Mat dstImg;
Mat element = getStructuringElement(MORPH_RECT, Size(, )); //morphologyEx(srcImg, dstImg, MORPH_OPEN, element); //开运算
//morphologyEx(srcImg, dstImg, MORPH_CLOSE, element); //闭运算
//morphologyEx(srcImg, dstImg, MORPH_GRADIENT, element); //形态学梯度运算
//morphologyEx(srcImg, dstImg, MORPH_TOPHAT, element); //顶帽运算
morphologyEx(srcImg, dstImg, MORPH_BLACKHAT, element); //黒帽运算 imshow("src", srcImg);
imshow("dst", dstImg);
waitKey();
}
二、小应用(找出差异,对差异进行操作)
#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat img1=imread("E://A.jpg");
Mat img2=imread("E://B.jpg");
Mat diff;
absdiff(img1,img2,diff);//用这个做减法可以避免出现负值=0的情况
imshow("img1",img1);
imshow("img2",img2);
imshow("diff",diff); Mat gray;
cvtColor(diff,gray,COLOR_BGR2GRAY);//转为灰度图
//adaptiveThreshold(gray,gray,255,ADAPTIVE_THRESH_GAUSSIAN_C,THRESH_BINARY_INV,15,3);//自适应阈值有点不懂
threshold(gray,gray,,,THRESH_BINARY);
imshow("threshold",gray); //进行形态学操作
Mat element=getStructuringElement(MORPH_RECT,Size(,));//定义结构元素
morphologyEx(gray,gray,MORPH_OPEN,element);//开运算
medianBlur(gray,gray,);//中值滤波
dilate(gray,gray,element);
imshow("dst",gray); waitKey();
}
opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)的更多相关文章
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- opencv学习之路(14)、形态学之膨胀腐蚀
一.膨胀腐蚀概述(对高亮部分进行操作) 二.膨胀 三.腐蚀 四.代码 1.查看结构元素 #include<opencv2/opencv.hpp> #include<iostream& ...
- opencv学习之路(5)、鼠标和滑动条操作
一.鼠标事件 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...
- OpenCV 学习之路(2) -- 操作像素
本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...
- [OpenCV学习笔记2][Mat数据类型和操作]
[Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...
- opencv学习之路(31)、GrabCut & FloodFill图像分割
一.GrabCut 1.利用Rect做分割 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat ...
- [原创]java WEB学习笔记65:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- OpenCV学习笔记:矩阵的掩码操作
矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...
- python学习之路-1 python基础操作
本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...
随机推荐
- EasyUI扩展——自定义列排序匹配字段
一些特殊情况下希望实现:单击某些列,但是排序要按照自定义指定另外的列排序 easyui扩展: 如果不写sort属性则按照默认该列的field排序 $.fn.datagrid.defaults.onBe ...
- iOS UIViewController生命周期控制
具体流程,看下图: init方法在init方法中实例化必要的对象(遵从LazyLoad思想)init方法中初始化ViewController本身 loadView方法当view需要被展示而它却是nil ...
- vue中打印显示++的问题解决方案(做成类似同步的操作就行了)
这个问题,困扰我很久很久 怎么实现的呢?首先进入页面就开始调取打印接口,打印接口的成功回调函数里面写 this.hasOut++(这是实时显示的数量)this.width=(this.hasOut/t ...
- cocos2d-X JS 获取cocostudio中的UI组件
1.先加载cocostudio导出的json文件,代码如下所示: var dong = ccs.load("res/Login.json"); //_login.setPositi ...
- python模拟艺龙网登录带验证码输入
1.使用urllib与urllib2包 2.使用cookielib自动管理cookie 3.360浏览器F12抓信息 登录请求地址和验证码地址都拿到了如图 # -*- coding: utf-8 -* ...
- sqli-labs(十七)
第五十四关: 这关大概意思就是尝试次数不能多于十次,必须十次之类查询处特点的key. 第一次:输入单引号报错 第二次:输入双引号不报错 说明后台是单引号进行的拼凑 第三步:这里应该是判断列,用orde ...
- HDU 1757 A Simple Math Problem(矩阵)
A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...
- 寻路——AI
小球找到目标位置, 必要时候进行跳跃 进行跳跃时,需要在cube上加上 Off Mesh Link 组件,并添加起跳位置和目标位置 在static位置选Navigation static 编写脚本 ...
- CentOS中利用Docker安装RabbitMQ
CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...
- GE与POST方法区别
1.用途. GET方法一般用于查询并获取信息,这意味着它是幂等的(对同一个url的多个请求,返回结果完全一样),因为没有修改资源状态,所以它是安全的.而POST一般用于更新资源信息,既不是幂等,也不是 ...