使用OpenCV在Python中进行图像腐蚀和膨胀


在本问题中,我们将了解Python如何使用OpenCV模块进行一些形态学操作,例如腐蚀和膨胀。OpenCV库主要用于计算机视觉,它是开源的,最初由英特尔设计,可在开源BSD许可下免费使用。

要使用OpenCV功能,我们需要使用pip下载它们。

sudo pip3 install opencv-python

什么是图像腐蚀以及它是如何工作的?

在腐蚀中,它会腐蚀掉前景对象的边界。它用于去除图像中的小噪点。腐蚀还可以用于分离两个连接的图像。

  • 一个核是由图像形成的。核是一个矩阵,其阶数为奇数,例如3、5、7。

  • 选择图像的一个像素。只有当核下的所有像素都为1时,此像素才会被选择为1。否则,它将被腐蚀。

  • 因此,边界附近的所有像素都将被丢弃。

  • 因此,前景对象的厚度减小。

什么是图像膨胀以及它是如何工作的?

在膨胀中,它会增加对象的面积。腐蚀可以去除噪点,但它也会缩小我们的图像,因此,在腐蚀之后,如果执行膨胀,我们可以获得更好的噪点去除结果。膨胀还可以用于连接对象的某些断裂部分。

  • 一个核是由图像形成的。核是一个矩阵,其阶数为奇数,例如3、5、7。

  • 选择图像的一个像素。只有当核下的所有像素都为1时,此像素才会被选择为1。

  • 增加图像中白色区域或前景对象的大小。

示例代码

import cv2 
import numpy as np
input_image = cv2.imread('TP_logo.jpg', cv2.IMREAD_COLOR)
 kernel = np.ones((3,3), np.uint8)       # set kernel as 3x3 matrix from numpy
#Create erosion and dilation image from the original image
erosion_image = cv2.erode(input_image, kernel, iterations=1)
dilation_image = cv2.dilate(input_image, kernel, iterations=1)
cv2.imshow('Input', input_image)
cv2.imshow('Erosion', erosion_image)
cv2.imshow('Dilation', dilation_image)
cv2.waitKey(0)       #wait for a key to exit

输出

Dilation Image

更新于:2019年7月30日

689 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.