本节学习了图片的形态转换,即利用函数和图像的前景色和背景色去侵蚀或者扩张图像图形。

import cv2
import numpy as np
from matplotlib import pyplot as plt img = cv2.imread(r'C:\root\learn\python\opencvTest\img\j_point.png')

#定义内核
kernel = np.ones((5,5),np.uint8)
'''
侵蚀图像:侵蚀前景物的边界(尽量使前景物的颜色为白色)
通过kernel滑动通过图像。原始图像中的一个像素只有在内核下所有的像素都是1才被认为时1,否则或被侵蚀(变成0)
''
erosion = cv2.erode(img,kernel, iterations=1)

'''
扩张图像:扩张前景物的边界。与侵蚀相反。如果内核滑动通过图像,只要有一个图像在内核作用下为1,则为1.
'''
dilation = cv2.dilate(img, kernel, iterations=1)
'''
opening先侵蚀在扩张。主要用于去除噪音
'''
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
'''
closing:先扩张再侵蚀:用于消除前景物中的‘小洞’
'''
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
'''
gradient:扩张图与侵蚀图之差。得到对象的轮廓
'''
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
#kernel = np.ones((20,20),np.uint8)

'''
tophat: 原图像与opening之差
'''
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

'''
blackhat: closing图像与原图像之差
'''
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT,kernel)
plt.subplot(241),plt.imshow(img),plt.title('Original')
plt.xticks([]),plt.yticks([])
plt.subplot(242),plt.imshow(erosion),plt.title('erosion')
plt.xticks([]),plt.yticks([])
plt.subplot(243),plt.imshow(dilation),plt.title('dilation')
plt.xticks([]),plt.yticks([])
plt.subplot(244),plt.imshow(opening),plt.title('opening')
plt.xticks([]),plt.yticks([])
plt.subplot(245),plt.imshow(closing),plt.title('closing')
plt.xticks([]),plt.yticks([])
plt.subplot(246),plt.imshow(gradient),plt.title('gradient')
plt.xticks([]),plt.yticks([])
plt.subplot(247),plt.imshow(tophat),plt.title('tophat')
plt.xticks([]),plt.yticks([])
plt.subplot(248),plt.imshow(blackhat),plt.title('blackhat')
plt.xticks([]),plt.yticks([])
plt.show()

初识OpenCV-Python - 008: 形态转换的更多相关文章

  1. OpenCV Python教程(3、直方图的计算与显示)

    转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...

  2. OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  3. Erlang/Elixir: 使用 OpenCV, Python 搭建图片缩略图服务器

    这篇文章是在OSX上测试和运行的的, Ubuntu下的安装和配置请移步到这里 应用程序进程树, 默认 Poolboy 中初始化10个用于处理图片的 Python 工作进程(Worker) 首先安装Op ...

  4. 完善GDAL与OpenCV间的数据格式转换与影像分块读写

    本博客为原创内容,未经博主允许禁止转载,商用,谢谢. 一.前言 关于GDAL与openCV间的数据格式转换,在我之前的博客中已有简要说明,这里,由于最近工作上经常用到openCV里的函数进行图像处理, ...

  5. python把汉字转换成拼音实现程序

    python把汉字转换成拼音实现程序 文章一个简洁干的汉字转拼音 程序,复制下载就可以直接使用,有需要的同学可以参考一下下. #coding:utf-8 #基于python2.6 table = 'a ...

  6. Python datatime 格式转换,插入MySQL数据库

    Python datatime 格式转换,插入MySQL数据库 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-11-2 ...

  7. Python中文繁简体转换工具

    Openccpy ___ _____ __ ___ ___ ___ _____ __ __ / __`\/\ '__`\ /'__`\/' _ `\ /'___\ /'___\/\ '__`\/\ \ ...

  8. Python 进制转换 二进制 八进制 十进制 十六进制

    Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html 全局定义一定不 ...

  9. 使用python制作时间戳转换工具

    使用python制作时间戳转换工具 python 时间戳转日期 日期转时间戳 前言:作为一个程序员一般情况下,json和时间戳是常用的两个工具,我咨询过很多个朋友,他们一般都是通过在线工具对json进 ...

随机推荐

  1. leetcode-158周赛-5222-分割字符串

    题目描述: 自己的提交: class Solution: def balancedStringSplit(self, s: str) -> int: if not s:return 0 res ...

  2. Dart编程字符串

    String数据类型表示一系列字符.Dart字符串是一系列UTF 16代码单元. Dart中的字符串值可以使用 单引号 或 双引号 或 三引号 表示.单行字符串使用单引号或双引号表示.三引号用于表示多 ...

  3. thinkphp session支持

    系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置.获取.删除和管理操作. session初始化设置 如果session ...

  4. js自动下载

    常用方法是利用a标签的属性download下载对应文件.图片等 <a href=".." download="...."></a> 但是 ...

  5. 给标签设置disabled属性后提交不了数据

    项目中遇到给select标签添加disabled属性然后提交表单的时候不能提交该表单的数据到后台, readonly属性对提交数据没有限制,但是readonly属性对radio.select.chec ...

  6. NX二次开发-删除经典工具栏UF_UI_remove_toolbar

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  7. NAT穿透解决方案介绍(转)--Java ICE实现

    转:http://www.cnblogs.com/javaminer/p/3575282.html 最近公司要实现在各种网络环境下面的多屏互动(机顶盒.android phone.iphone及PC端 ...

  8. mysql的JDBC连接

    程序是通过DriverManager注册驱动,所以加载之后可以直接使用DriverMannagermysql中的多态: 不仅是赋值的时候使用了多态,返回的时候都是返回的借口(不是返回的子类对象),所以 ...

  9. 编译Solr4.72 源码没有成功

    最近需要用到solr,查询Hbase里面的数据,编译Solr的时候遇到了点问题: 下了solr的源码后需要用ant自己编译: 源码下载地址:https://svn.apache.org/repos/a ...

  10. scrapy的使用-Request

    Request对象在我们写爬虫,爬取一页的数据需要重新发送一个请求的时候调用.这个类需要传递一些参数.其中比较常用的参数有: 1.url    请求的url对象 2.callback  在下载器下载完 ...