ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python实现opencv学习二十:图像的开闭操作

2021-06-29 22:29:52  阅读:233  来源: 互联网

标签:binary MORPH python image 开闭 opencv 图像 kernel cv


代码:

# -*- coding=GBK -*-
import cv2 as cv


#开操作:
    # 图像形态学的重要操纵之一,基于膨胀与腐蚀操作组合形成的;
    # 主要是应用在二值图像分析中,灰度图像亦可;
    # 开操作 = 腐蚀+膨胀 ,输入图像 + 结构元素
    # 作用:用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积.提取水平或竖直的线

# 闭操作:
    # 图像形态学的重要操纵之一,基于膨胀与腐蚀操作组合形成的;
    # 主要是应用在二值图像分析中,灰度图像亦可;
    # 开操作 = 膨胀+腐蚀 ,输入图像 + 结构元素
    # 作用:用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积.

# getStructuringElement() 与 morphologyEx() 函数用法:https://blog.csdn.net/weixin_42512684/article/details/111087122
def open_image(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("Binarization", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5)) # 返回指定形状和尺寸的结构元素。
    # retval = cv.getStructuringElement(shape, ksize[, anchor])
    # shape: 元素形状,OpenCV 中提供了三种,MORPH_RECT(矩阵),MORPH_CORSS(交叉形状),MORPH_ELLIPSE(椭圆) ;
    # ksize,结构元素的大小;
    # anchor,元素内的描点位置,默认为 (-1,-1)表示形状中心,在这里值得注意的是,只有MORPH-CROSS形状依赖描点位置,其它情况描点仅调节其他形态运算结果偏移了多少
    binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
    # dst =cv.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]] )
    cv.imshow("Operation_Open", binary)

def close_image(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    binary = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
    cv.imshow("Operation_Close", binary)


src = cv.imread("fengling.jpg")
cv.imshow("before", src)
open_image(src)
close_image(src)
cv.waitKey(0)
cv.destroyAllWindows()

结果:

备注:

getStructuringElement(),morphologyEx()参考资料:https://blog.csdn.net/weixin_42512684/article/details/111087122

膨胀,腐蚀参考资料:https://blog.csdn.net/weixin_44623637/article/details/98777859

标签:binary,MORPH,python,image,开闭,opencv,图像,kernel,cv
来源: https://blog.csdn.net/weixin_40338379/article/details/118345272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有