OpenCV形态学运算

1.OpenCV形态学运算morphologyEx开运算 、闭运算 、形态学梯度 、顶帽运算 、黑帽运算 、腐蚀运算 、膨胀运算 、击中击不中运算


 

void cv::morphologyEx   (InputArray src,OutputArray dst,int op,InputArray kernel,Point anchor = Point(-1,-1),int iterations = 1,int borderType = BORDER_CONSTANT,const Scalar & borderValue = morphologyDefaultBorderValue())  

InputArray src: 输入图像,可以是Mat类型,对于图像通道数无要求,但图像深度必须是CV_8UCV_16UCV_16SCV_32FCV_64F 
. OutPutArray dst: 
目标图像,与原图像尺寸核类型相同 
. int op: 形态学运算的类型,可以通过MorphTypes查看,如下所示: 
标识符 | 运算类型 
MORPH_OPEN 开运算 
MORPH_CLOSE :闭运算 
MORPH_GRADIENT 形态学梯度 
MORPH_TOPHAT:顶帽运算 
MORPH_BLACKHAT 黑帽运算 
MORPH_ERODE :腐蚀运算 
MORPH_DILATE :膨胀运算 
MORPH_HITMISS: 击中击不中运算(只支持CV_8UC1类型的二值图像)

. InputArray kernel: 形态学运算的内核,如果是Mat()则表示的是参考点位于内核中心3x3的核,前面也提到一般使用前需要定义一个Mat变量结合getStructuringElement()函数使用,getStructuringElement会返回指定形状和尺寸的结构元素,这里再重申一下getStructuringElement的参数,其函数原型如下:

Mat cv::getStructuringElement   (   int     shape,Size    ksize,Point   anchor = Point(-1,-1))

int shape: kernel的形状,由cv::MorphShapes指定,如下:

 

分别是矩形(MORPH_RECT)、交叉形(MORPH_CROSS)、椭圆形(MORPH_ELLIPSE) 
. Size ksize: kernel
的尺寸 
. Point anchor = Point(-1, -1): 锚点位置

. Point anchor=Point(-1, -1): 锚点位置 
. int iterations=1: 迭代使用函数的次数,默认值为
. int borderType=BORDER_CONSTANT:
用于推断图像外部像素的某种边界模式,有默认值BORDER_CONSTANT 
. const Scalar & borderValue=morphologyDefaultBorderValue():
当边界为常数时的边界值,可以通过createMorphologyFilter() 查看更多细节。

这些形态学操作都是可执行就地操作(in-place),对于多通道图像,每个图像通道进行单独操作。

 

 

2.示例


 

#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace std;using namespace cv;int main(){Mat srcImage = cv::imread("1.png", 1);if (!srcImage.data)return 1;Mat srcGray;cvtColor(srcImage, srcGray, CV_BGR2GRAY);// 定义结构元素Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));Mat topHatMat, blackHatMat;// 形态学Top-Hat 顶帽morphologyEx(srcGray, topHatMat,MORPH_TOPHAT, element);// 形态学Top-Hat 黑帽morphologyEx(srcGray, blackHatMat,MORPH_BLACKHAT, element);Mat Object_img;Object_img = srcGray + topHatMat - blackHatMat;imshow(" srcGray ", srcGray);imshow(" topHatMat  ", topHatMat);imshow(" blackHatMat ", blackHatMat);imshow(" Object_img ", blackHatMat);waitKey(0);return 0;}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python判断成绩等级_Python计算山东新高考选考科目卷面原始成绩为等级成绩

原标题&#xff1a;Python计算山东新高考选考科目卷面原始成绩为等级成绩图书详情&#xff1a;配套资源&#xff1a;用书教师可以免费获取教学大纲、教案、课件、源码、习题答案、课堂管理与考试系统。山东省新高考政策33中&#xff0c;考生必考科目有语文、数学、英语&#xf…

java web ee_Java EE 6 Web配置文件。 在云上。 简单。

java web eeJava SE还可以。 Java EE是邪恶的。 这就是我一直想的。 好吧&#xff0c;现在不再了。 让我分享我的经验。 几周前&#xff0c;我开始考虑将旧版spring hibernate tomcat应用程序移植到新平台上&#xff1a; SAP NetWeaver云 。 我知道您在极客那里的想法&…

帆软报表(finereport) 饼图联动

饼图联动&#xff1a;点击饼图1&#xff0c;饼图2和饼图3显示饼图1的关联数据&#xff0c;接着点击饼图2&#xff0c;饼图3显示饼图2的关联数据&#xff0c;点击上方清除级联&#xff0c;饼图则恢复默认展示状态 下面以上图示例效果为例&#xff0c;说明制作过程。 1.为每个饼图…

中值滤波medianBlur

C: void medianBlur(InputArray src, OutputArray dst, int ksize) 参数解释&#xff1a; . InputArray src: 输入图像&#xff0c;图像为1、3、4通道的图像&#xff0c;当模板尺寸为3或5时&#xff0c;图像深度只能为CV_8U、CV_16U、CV_32F中的一个&#xff0c;如而对于较大…

wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?

设置单元格属性将新GridCellAttr添加到GridCellAttrProvider名单。 随着列表的增长&#xff0c;查找单元格的特定属性(通过遍历列表和比较坐标)变得越来越慢。您可以尝试通过PyGridTableBase.SetAttr和GetAttr(例如使用字典)实现自己的加快步伐&#xff1a;编辑&#xff1a;更新…

特性和混入不是面向对象的

让我立刻说&#xff0c;我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 &#xff0c;就像David West在他的《 Objecting Thought》一书中所建议的那样。 这些功能具有不同的名称&#xff0c;但最常见的是traits和mixins 。 我很不明白&…

模板匹配matchTemplate

C: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method); image&#xff1a;输入图像。必须为8位或者32位的浮点型。 templ&#xff1a;用于搜索的模板图像。必须小于输入图像并且是一样的数据类型。 result&#xff1a;匹配…

pandas处理csv

import pandas as pd from pandas import Series,DataFrame 打开csv文件 deli pd.read_csv(../得力.csv) 转换为DataFrame数据类型 df DataFrame(datadeli) 更改列名 df.rename(columns{"title":"商品名称","price":"价格","pr…

php 随机在文章中添加锚文本_SEO站长布局锚文本时的7大注意事项

通过对什么是锚文本链接、锚文本作用的讲解&#xff0c;以及怎样布局网站站内锚文本的介绍。相信大家都有了比较清晰的认识&#xff0c;也会重视网站锚文本的建设。但是菜鸟菌还是不得不再啰嗦点&#xff0c;锚文本虽然好处大大的&#xff0c;在布局锚文本的时候还是注意以下几…

OpenCV rectangle

void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness1, int lineType8, int shift0) img 图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点 color 线条颜色 (RGB) 或亮度&#xff08;灰度图像 &#xff09;(grayscale image…

【Java】NIO中Selector的select方法源码分析

该篇博客的有些内容和在之前介绍过了&#xff0c;在这里再次涉及到的就不详细说了&#xff0c;如果有不理解请看【Java】NIO中Channel的注册源码分析&#xff0c; 【Java】NIO中Selector的创建源码分析 Selector的创建在Windows下默认生成WindowsSelectorImpl对象&#xff0c;那…

简单小程序代码_小程序该如何运营

小型程序升级有三种最重要的方法&#xff1a;1.借助微信附近小程序功能实现客户扩展大家可能都知道&#xff0c;微信平台具有附近小程序的功能。此功能使用户可以查看周围五公里范围内的所有小程序。正是由于这个原因&#xff0c;一旦商人完成了这个小程序并加入了附近的小程序…

在javafx中界面主题_最小的JavaFX演示文稿(在JavaFX中)

在javafx中界面主题如果您要进行有关JavaFX的演示&#xff0c;那么使用JavaFX本身进行演示非常方便。 这样&#xff0c;您无需离开演示文稿即可轻松显示示例。 这是一个非常简单的示例。 在NetBeans中&#xff0c;设置一个新的JavaFX项目“ New Project”->“ JavaFX”->…

OpenCV cvLine

cvLine 函数原型&#xff1a; void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness1, int line_type8, int shift0 ); img 图像。pt1 线段的第一个端点。pt2 线段的第二个端点。color 线段的颜色。thickness 线段的粗细程度。line_type 线段…

lengthOfLongestSubstring

lengthOflongestSubstring 试例&#xff1a; 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 /**** param {string} s* 无重复字符的最长子串*/ function lengthOfLongestSubstring(s) {if (typeof s ! s…

编译原理--词法分析C++

一、实验项目要求 1.实验目的 通过设计编制调试一个具体的词法分析程序&#xff0c;加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程&#xff0c;从输入的源程序中&#xff0c;识别出各个具有…

python list转map_Python 进阶之术 Map Filter Reduce

" 本文字数&#xff1a;763 字 || 阅读时间&#xff1a;3分钟"Map Map 会将⼀个函数映射到⼀个输⼊列表的所有元素上。这是它的规范&#xff1a;规范 map(function_to_apply, list_of_inputs) ⼤多数时候&#xff0c;我们要把列表中所有元素⼀个个地传递给⼀个函数&a…

JavaFX动画工具

好的&#xff0c;我想是时候让您讲一个小秘密了。 在过去的大约三个月中&#xff0c;我从事一个私有项目&#xff0c;目标是创建一个工具&#xff0c;使我可以轻松地为Java桌面应用程序创建动画。 JavaFX在API级别上提供了出色的动画制作支持&#xff0c;但对于初学者甚至中级程…

ImageWatch的使用

1.能够实时显示图像和矩阵Mat的内容&#xff0c;跟Matlab很像&#xff0c;方便程序调试&#xff0c;相当好用。 下载地址&#xff1a; https://marketplace.visualstudio.com/items?itemNameVisualCPPTeam.ImageWatch 2.下载好插件ImageWatch&#xff0c;双击ImageWatch.vs…

springboot与任务(邮件任务)

邮件发送需要引入spring-boot-starter-mailSpring Boot 自动配置MailSenderAutoConfiguration定义MailProperties内容&#xff0c;配置在application.yml中自动装配JavaMailSender 测试邮件发送 pom文件配置&#xff1a; <!--邮件发送--><dependency><groupId&g…