概述
形态学操作之开闭操作
形态学开闭操作其实与之前的膨胀与腐蚀有一定的关系
1.开操作
图像形态学的重要操作之一,基于膨胀与腐蚀操作组合形成的,主要应用在二值图像分析中,灰度图像即可
开操作=腐蚀+膨胀,输入图像+结构元素
开操作可以消除图像中的干扰区域,不会破坏结构
2.闭操作
图像形态学的重要操作之一,基于膨胀与腐蚀操作组合形成的 主要应用在二值图像分析中,灰度图像即可
开操作=腐蚀+膨胀,输入图像+结构元素
闭操作可以填充小的封闭区域
opencv中利用cv2.morphologyEx(src, op, kernel) 函数来进行各类形态学的变化
函数原型:cv2.morphologyEx(src, op, kernel)
参数说明:
(1)src:传入的图片
(2)op进行变化的方式
cv2.MORPH_OPEN 进行开运算,指的是先进行腐蚀操作,再进行膨胀操作
cv2.MORPH_CLOSE 进行闭运算, 指的是先进行膨胀操作,再进行腐蚀操作
(3)kernel表示方框的大小
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(15,1)) #只保留横向的
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 15)) #只保留竖向的
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) #消除杂乱的线
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10)) #只保留原点,不同的结构元素
函数原型:cv2.getStructuringElement(ma,kernel_size) 返回指定形状和尺寸的结构元素。
参数说明:
1.ma:表示内核的形状
MORPH_RECT:矩形
MORPH_CROSS:交叉形
MORPH_ELLIPSE:椭圆形
2.kernel_size:内核的尺寸
代码奉上:
import cv2
import numpy as np
def open_deal(image):
print(image.shape)
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #灰度图转换
ret, binary=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV|cv2.THRESH_OTSU) #二值化处理
cv2.imshow("binary",binary)
#kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(15,1)) #只保留横向的 open&close1.png
#kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 15)) #只保留竖向的 open&close1.png
#kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) #消除杂乱的线 open&close2.png
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10)) #只保留原点,不同的结构元素 open&close3.png
dst=cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) #开操作
cv2.imshow("open_deal", dst)
def close_deal(image):
print(image.shape)
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #灰度图转换
ret, binary=cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU) #二值化处理
cv2.imshow("binary",binary)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(15,15)) #定义方框大小
dst=cv2.morphologyEx(binary, cv2.MORPH_CLOSE,kernel) #闭操作
cv2.imshow("close_deal", dst)
print("-----------hello------------")
src=cv2.imread("open&close3.png")
cv2.imshow("source_image",src)
open_deal(src)
close_deal(src)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图:
开操作:
闭操作:
最后
以上就是苹果大白为你收集整理的【OpenCV3.3+Python3.6】形态学操作之开闭操作的全部内容,希望文章能够帮你解决【OpenCV3.3+Python3.6】形态学操作之开闭操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复