pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作

顶帽(Top Hat):

原图像与开操作之间的差值图像,突出原图像中比周围亮的区域

黑帽(Black Hat):

闭操作图像与原图像的差值图像, 突出原图像中比周围暗的区域

形态学梯度(Gradient):

基础梯度:基础梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,称为梯度图像也是opencv中支持的计算形态学梯度的方法,而此方法得到梯度有称为基本梯度。

内部梯度:是用原图像减去腐蚀之后的图像得到差值图像,称为图像的内部梯度。

外部梯度:图像膨胀之后再减去原来的图像得到的差值图像,称为图像的外部梯度。

顶帽python实现以及结果

deftop_hat_demo(image):

gray=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

dst=cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, kernel)#提升亮度

cimage =np.array(gray.shape, np.uint8)

cimage= 100dst=cv2.add(dst, cimage)

cv2.imshow("top_hat_demo", dst)

黑帽python实现以及结果

defblack_hat_demo(image):

gray=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

dst=cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, kernel)#提升亮度

cimage =np.array(gray.shape, np.uint8)

cimage= 100dst=cv2.add(dst, cimage)

cv2.imshow("black_hat_demo", dst)

二值图像的顶帽与黑帽操作

def threshold_top_hat_demo(image): #二值图像顶帽操作

gray =cv2.cvtColor(image, cv2.COLOR_BGRA2GRAY)

ret, thresh= cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY |cv2.THRESH_OTSU)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

dst=cv2.morphologyEx(thresh, cv2.MORPH_TOPHAT, kernel)

cv2.imshow("dst", dst)def threshold_black_hat_demo(image): #二值图像黑帽操作

gray =cv2.cvtColor(image, cv2.COLOR_BGRA2GRAY)

ret, thresh= cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY |cv2.THRESH_OTSU)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

dst=cv2.morphologyEx(thresh, cv2.MORPH_BLACKHAT, kernel)

cv2.imshow("dst", dst)

形态学梯度操作

defgradient1_demo(image):

cv2.imshow("image", image)

gray=cv2.cvtColor(image, cv2.COLOR_BGRA2GRAY)

ret, thresh= cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY |cv2.THRESH_OTSU)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

dst= cv2.morphologyEx(thresh, cv2.MORPH_GRADIENT, kernel) #基本梯度

cv2.imshow("dst", dst)defgradients2_demo(image):

cv2.imshow("image", image)

kernel= cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

dm=cv2.dilate(image, kernel)

em=cv2.erode(image, kernel)

dst1= cv2.subtract(image, em) #内部梯度

dst2 = cv2.subtract(dm, image) #外部梯度

cv2.imshow("internal", dst1)

cv2.imshow("external", dst2)

内部梯度,外部梯度结果

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

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

相关文章

Spring webflow:上传多个文件

上篇讲了上传单个文件,在上篇的基础上稍作修改就可以上传多个文件了。 实现 首先,实体类要修改,使用List来存储多个文件: Component public class GoodsEntity implements Serializable{private static final long serialVersi…

csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换

Python中 CSV格式清洗与转换的实例代码题目:CSV格式清洗与转换描述附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪…

斐波那契数列通项公式

1.对于斐波那契数列来说,存在通项公式,f[n] 2、Hdu练习题1568; 大意求斐波那契数列中的某一项,n很大,只能在O(1)时间求出,并且只要前四位 当n很大时最后一项几乎为零转载于:https://www.cnblogs.com/dlut-l…

Spring MVC 生成文件类型响应

图片控制器代码如下: Controller RequestMapping("/") public class WebController {RequestMapping(methodRequestMethod.GET,path"/img/{imgNo}")public void getImg(HttpServletResponse response,int index) throws IOException{ //读取图…

服务器驱动精灵_驱动精灵真的可以帮你安装驱动吗?别再无脑装驱动了

之前和大家讲过一期安装官方纯净系统的方法,戳我查看然后很多人就说重装之后显卡驱动掉了打游戏卡的跟PPT一样。于是很多人在重装系统或是进行了重大硬件更新后,一般会采用第三方驱动管理软件来进行硬件的更新,实际上这是一种自杀式行为&…

(原创)网吧桌面背景添加文字,转载注明出处!

很简单的小工具,可用于公告等。 下载地址:http://pan.baidu.com/s/1i5dPQTJ 密码:sfw7 博客地址:http://www.cnblogs.com/flybox/ 如有必要,后续可添加功能:远端配置文字内容等,方便多网吧统一…

MongoDB 操作范例

查询 查询嵌套文档 比如,有商品文档goods,结构如下: {"name":"牙刷","class":{"classNo": 111,"name":"日用品"} } 现在要查找所有 classNo111的商品,怎么查&am…

前端vue适配不同的分辨率_前端面试时,被问到项目中的难点有哪些?

在每个前端求职者的面试过程中,一定都有过被面试官问到项目中的难点,而答不上来的情况。为了让大家在前端面试前准备得更加充足,小编准备了一些易被忽视且难度较高的前端面试题,希望可以帮助大家更加顺利完成求职,找到…

web语义化与h5新增标签

Web语义化就是html告诉我们也告诉机器这一块是什么内容,例如:“这行是一个标题,这几行组成一个段落,这是一个列表,那是一个链接。”Web语义化有三个阶段:1、h1~h6、thead、ul、ol等HTML标签。这些标签用于在…

在jsp页面里动态生成EL表达式的key

如图,页面中有n个商品列表需要加载,这个列表的名字分别是list1、list2…listn,总之不是写死的。 在Ctroller里面,可见参数名师动态生成的: RequestMapping(method RequestMethod.GET) public String showIndex(Model…

python做马尔科夫模型预测法_通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型...

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。文章梗概马尔科夫是何人?马尔科夫性质是什么?马尔科夫模型是什么?是什么让马尔科夫模型成为隐性的?一种能够用于条件检测的马尔科夫模型结论…

给JAVA初学者的50个忠告

给JAVA初学者的50个忠告 摘自: http://wenku.baidu.com/link?urlp5vDKt5bKzUXxG_hAsB9XopHJRROeovOGGh4jnXGZXiUedR-fNOLO7zb6ddENo5UhJTjRS9KdugEBL_7t13Nz5vZnvCmLRbHrwwjfGSi8XC 给JAVA初学者的50个忠告   1.把JAVA当成一门新的语言学习(和其他语言没啥关系&a…

换乐网redis应用分析

没听过换乐网?没错,它在我的电脑里 用法用途 在项目中,redis主要用作缓存。而在作为缓存,意义最大的是缓存计算结果,因为有些计算是一个很耗时间和资源的过程,而计算的结果不会经常改变,这时使…

AutoLayout--masonry使用

[label1 mas_makeConstraints:^(MASConstraintMaker *make) { //使左边间距为 make.left.equalTo(self.view.mas_left).offset(11); //顶部间距 make.top.equalTo(self.view.mas_top).offset(70); //高度 make.height.equalTo(30); }]; [label2 mas_makeConstraints:^(MASConst…

matplotlib 热力图_5分钟入门 Seaborn 热力图可视化

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。注:所有代码均在IPy…

换乐网GridFS应用分析

GridFS是MongoDB提供的一种存储大文件的规范,文件在存储的过程中会分成一小块一小块(chunks),文件的信息会保存在另外一个集合中。 通过MD5校验过滤重复上传文件 在换乐网中,所有用户上传的文件都会保存在GridFS中: …

JavaWeb学习过程 之c3p0的使用

这几天在学习使用MVC模式来做几个小项目,在学习的过程中,用到了数据库连接池。便特意去学习了一下。 一、谈一谈为什么要使用数据库连接池 在开发基于数据库的web程序时,传统的模式(在servlet,beans 中建立数据库链接&…

python爬虫高级项目管理师培训学校_推荐一条高效的Python爬虫学习路径!

如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得简单、容易上手。对于小白…

redis报错:jedis connection exception unexpected end of stream

一般的话,原因是你在spring中把jedis客户端配置成了单例模式(singleton),所以当在极短时间内,有多个请求连续发送过来时,jedis就会报错,说一个连接还没结束。 所以正确的配置是,将jedis配置成原…

Linq(拓展方法+select())

拓展方法: 目的:对于已存在类型的行为进行拓展 注意事项: 1:扩展方法必须是一种特殊的静态方法 2:扩展方法必须是在静态类中 3: 扩展方法的优先级低于同名类的方法 4:扩展方法只在特定的命名空间内有效 5&a…