Python OpenCV学习之图像形态学
简介
图像形态学是图像处理中重要的一环,常常用于消除图像噪声和边缘检测等。OpenCV提供了一系列的图像形态学操作,包括腐蚀(erode)、膨胀(dilate)、开(open)、闭(close)等。
腐蚀(erode)
腐蚀操作主要用于消除小的亮点或白色噪点等,是对图像的缩小操作,可以使图像中的轮廓细化,使之保持原有形状。
在OpenCV中,可以使用cv2.erode()函数实现腐蚀操作。该函数的原型为:
cv2.erode(src, kernel, iterations=None) -> dst
其中,src
为输入的图像,kernel
为腐蚀核,可以使用cv2.getStructuringElement()生成,iterations
为腐蚀次数,缺省值为1,dst
为输出的图像。
下面是一个示例:
import cv2
import numpy as np
img = cv2.imread("input.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(gray, kernel, iterations=1)
cv2.imwrite("output.png", erosion)
膨胀(dilate)
膨胀操作与腐蚀操作相反,它主要用于扩大图像的高亮区域,是对图像的增大操作,可以使图像中的轮廓粗化,使之保持原有形状。
在OpenCV中,可以使用cv2.dilate()函数实现膨胀操作。该函数的原型为:
cv2.dilate(src, kernel, iterations=None) -> dst
其中,参数与cv2.erode()函数类似。
下面是一个示例:
import cv2
import numpy as np
img = cv2.imread("input.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((5, 5), np.uint8)
dilation = cv2.dilate(gray, kernel, iterations=1)
cv2.imwrite("output.png", dilation)
开(open)
开操作主要用于去除小的亮点或白色噪点等,同时保持图像中的线条和曲线等形状。
在OpenCV中,可以使用cv2.morphologyEx()函数结合cv2.erode()函数和cv2.dilate()函数实现开操作。该函数的原型为:
cv2.morphologyEx(src, op, kernel, dst=None, iterations=None, borderType=None, borderValue=None) -> dst
其中,op
为形态学操作类型,可以使用cv2.MORPH_OPEN表示开操作,dst
为输出的图像。
下面是一个示例:
import cv2
import numpy as np
img = cv2.imread("input.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel)
cv2.imwrite("output.png", opening)
闭(close)
闭操作与开操作相反,它主要用于去除小的黑点或黑色噪点等,同时保持图像中的线条和曲线等形状。
在OpenCV中,可以使用cv2.morphologyEx()函数结合cv2.erode()函数和cv2.dilate()函数实现闭操作。该函数的原型为:
cv2.morphologyEx(src, op, kernel, dst=None, iterations=None, borderType=None, borderValue=None) -> dst
其中,op
为形态学操作类型,可以使用cv2.MORPH_CLOSE表示闭操作,dst
为输出的图像。
下面是一个示例:
import cv2
import numpy as np
img = cv2.imread("input.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((5, 5), np.uint8)
closing = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)
cv2.imwrite("output.png", closing)
总结
使用OpenCV的图像形态学操作,可以方便、高效地处理图像中的噪声,获得更好的图像质量,同时保留图像的重要特征。在实际应用中,可以根据具体需要选择不同的形态学操作,以获得最优的处理效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python OpenCV学习之图像形态学 - Python技术站