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

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. 累乘函数线性逆元打表,阶乘反演——bzoj4816

    学了一种新套路,倒序打表函数的逆元可以直接线性完成 #include<bits/stdc++.h> using namespace std; #define ll long long #d ...

  2. SpringBoot_Redis配置

    Spring Boot – redis 1.添加依赖 <!-- 引入 spring-boot-starter-redis 当前最新版本--> <dependency> < ...

  3. NX二次开发-UFUN单按钮模态对话框窗口打印uc1601用法

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> UF_initialize(); //方法1(uc1601) uc1601();// ...

  4. Spring-Security (学习记录一)--登录

    目录 创建maven工程 1. 在pom.xml中加入相关jar包的配置 2.添加spring-security.xml文件 3.新建admin和user文件夹 4.配置web.xml文件 5.访问 ...

  5. hexo next主题深度优化(七),cdn加速。

    文章目录 注: 正题: 免费cdn 收费cdn 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io ...

  6. idea 设置默认maven auto import,不需要每次都弹出

    1 2 误区 从这里点进去进行设置,或者每次打开项目右击下方的 auto impot都是不对的.

  7. project2_login(登录窗口)

    该project是在网易云课堂上的公开课<用 python 和 tkinter 做简单的窗口视窗>课程当中学习的,是该课程中的一个结课小项目,项目中的知识点内容涉及该课程中所学习到的大多数 ...

  8. VIM 配色方案,先保存一下

    https://github.com/chriskempson/tomorrow-theme http://ethanschoonover.com/solarized http://ethanscho ...

  9. Codeforces 1168A Increasing by Modulo

    题目链接:http://codeforces.com/problemset/problem/1168/A 题意:给一个数组,数组中元素范围为0~n,每次你可以选择若干元素进行(ai+1)%m的操作,问 ...

  10. 剑指offer——35二叉树的后序遍历

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   题解: 这道题,一开始以为将后序遍历排序后的得 ...