OpenCV 图象腐蚀形态学操作 全家桶
图象腐蚀与形态学操作 opencv
1. 通过调用库函数实现图像的腐蚀、膨胀;
2. 通过设置结构元素、元素大小、形态学操作类型实现对图象的形态学操作。
源码(VS2017+OpenCV 4.0)
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace std;
using namespace cv; //全局变量
Mat src, res;
int slider = ;//腐蚀膨胀滑杆
const int slider_max = ;
int operation = ;//形态学操作类型
const int operation_max = ;
int kenl = ;//内核类型
const int kenl_max = ;
int kenl_size = ;//内核大小
const int kenl_size_max = ; //回调函数
void on_trackbar(int pos, void*);
//腐蚀
void getErodeAndDilate(int level, int pattern); //腐蚀
void getErodeAndDilate(int level, int pattern)
{
//进行腐蚀/膨胀
if(pattern == )
erode(src, res, Mat(), Point(-, -), level);
else if(pattern == )
dilate(src, res, Mat(), Point(-, -), level); imshow("处理结果1", res);
} //回调函数:腐蚀
void on_trackbar1(int pos, void*)
{
getErodeAndDilate(pos, );
} //回调函数:膨胀
void on_trackbar2(int pos, void*)
{
getErodeAndDilate(pos, );
} //回调函数:形态学操作类型
void on_trackbar3(int pos, void*)
{
int op = pos + ;
//选择内核形状
Mat elemment = getStructuringElement(kenl, Size( * kenl_size + , * kenl_size + )); morphologyEx(src, res, op, elemment);
imshow("处理结果2", res);
} int main()
{
string file = "D:\\trashBox\\testIMG\\monkey.jpg";
src = imread(file);
if (!src.data)
{
cout << "图片读取失败." << endl;
return ;
}
namedWindow("处理结果1");
//创建选择腐蚀次数的 trackbar
createTrackbar("腐蚀级数", "处理结果1", &slider, slider_max, on_trackbar1);
//创建选择膨胀次数的 trackbar
createTrackbar("膨胀级数", "处理结果1", &slider, slider_max, on_trackbar2); namedWindow("处理结果2");
//创建选择具体操作的 trackbar
createTrackbar("形态学操作\n开运算-0\n闭运算-1\n梯度-2\nTopHat-3\nBlackHat-4", "处理结果2", &operation, operation_max, on_trackbar3);
//创建选择内核形状的 trackbar
createTrackbar("结构元素:\n 0: Rect - 1: Cross - 2: Ellipse", "处理结果2", &kenl, kenl_max, on_trackbar3);
//创建选择内核大小的 trackbar
createTrackbar("内核大小:\n 2n +1", "处理结果2", &kenl_size, kenl_size_max, on_trackbar3); waitKey();
return ;
}
效果图
1. 图像腐蚀、膨胀





2. 形态学操作


其他组合操作,自己去探索吧,挺有趣的!
更多opencv中文资料,参考这里哟!
OpenCV 图象腐蚀形态学操作 全家桶的更多相关文章
- OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)
转自:OpenCV 教程 另附:计算机视觉:算法与应用(2012),Learning OpenCV(2009) 平滑图像:滤波器 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法.平滑处理的 ...
- OPENCV形态学操作1
形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是 ...
- opencv中的图像形态学——腐蚀膨胀
腐蚀膨胀是图像形态学比较常见的处理,腐蚀一般可以用来消除噪点,分割出独立的图像元素等. 一般腐蚀操作对二值图进行处理,腐蚀操作如下图,中心位置的像素点是否与周围领域的像素点颜色一样(即是否是白色点,即 ...
- 【图像处理】OpenCV+Python图像处理入门教程(七)图像形态学操作
图像形态学主要从图像内提取分量信息,该分量信息通常对表达图像的特征具有重要意义.例如,在车牌号码识别中,能够使用形态学计算其重要特征信息,在进行识别时,只需对这些特征信息运算即可.图像形态学在目标视觉 ...
- opencv学习笔记(五)----图像的形态学操作
图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作...(主要也是为了去噪声,改善图像) 形态学操作都是用于处理二值图像(其 ...
- IP 基础知识全家桶,45 张图一套带走
前言 前段时间,有读者希望我写一篇关于 IP 分类地址.子网划分等的文章,他反馈常常混淆,摸不着头脑. 那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个 IP 基础知识全家桶. ...
- opencv::形态学操作
形态学操作 开操作- open 闭操作- close 形态学梯度- Morphological Gradient 顶帽 – top hat 黑帽 – black hat 开操作- open 先腐蚀后膨 ...
- EOS基础全家桶(七)合约表操作
简介 本篇我们开始来为后续合约开发做准备了,先来说说EOS内置的系统合约的功能吧,本篇将侧重于合约表数据的查询,这将有利于我们理解EOS的功能,并可以进行必要的数据查询. EOS基础全家桶(七)合约表 ...
- EOS基础全家桶(十)交易Action操作
简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...
随机推荐
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_10-SpringSecurityOauth2研究-校验令牌&刷新令牌
3.5校验令牌 Spring Security Oauth2提供校验令牌的端点,如下: Get: http://localhost:40400/auth/oauth/check_token?token ...
- mysql 1577、1548错误 解决方案
mysql 1577.1548错误 解决方案 1.mysql版本: 5.5.12 2.问题原因: 使用Navicat导出数据库的提示 :1577 – Cannot proceed because sy ...
- 【422】Insert often-used pieces of text in gedit
Ref: Snippets Enable Snippets Plugin Browse Snippets Using Snippets To insert a nippet into your cur ...
- iOS笔试题01
1. #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1> #import和#include都能完整地包 ...
- 在Win7环境下搭建Geant4工作平台
本物理专业小硕,现在材料实验室工作,研究方向大概是核屏蔽材料的软件模拟吧.其实实验室里大多数师兄弟都是搞焊接的,平时能接触到这类直接给源码自己编译的软件的机会基本为零,所以一切都靠自己探索,成功搭建了 ...
- 【数据库开发】C++测试redis中的publish/subscribe
运用 http://blog.csdn.net/xumaojun/article/details/51558237 中的redis_publisher.hredis_publisher.cpp red ...
- 最新 网易java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易.京东.去哪儿等10家互联网公司的校招Offer,因为某些自身原因最终选择了网易.6.7月主要是做系统复习.项目复盘.LeetCode与牛客刷题 ...
- Spring 商品分类
实体商品示例代码 package cn.maxhou.entity; import java.io.Serializable; import java.math.BigDecimal; import ...
- 使用Homebrew来安装Node等工具
原文转载自:https://www.cnblogs.com/richard-youth/p/9718349.html 使用 React Native,必须安装的依赖有:Node.Watchman 和 ...
- Java面试 - final、finally、finalize的区别?
final:用于声明属性, 方法和类,分别表示属性不可变.方法不可覆盖.被其修饰的类不可继承. finally:异常处理语句结构的一部分,表示总是执行. finalize:Object 类的一个方法, ...