Opencv基础操作-腐蚀操作-膨胀操作

这篇具有很好参考价值的文章主要介绍了Opencv基础操作-腐蚀操作-膨胀操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

腐蚀操作

腐蚀操作原理(使价值信息越来越少)

初始化一个核(初始化大小和尺寸),类似于一个滑动窗口,在目标图像上面进行遍历,若这个窗口内图像的像素都大于或者都小于窗口元素(都为前景或者背景)则不进行操作,若不同,则将窗口内对应的图像像素进行腐蚀操作(将窗口内的图像元素替换为窗口内图像元素的最小值)。即若窗口内的图像像素相同,不进行操作,若不同,则将将窗口内的图像元素替换为窗口内图像像素的最小值。(腐蚀膨胀操作一般应用于灰度图或者二值图,所有最大值与最小值一般分别为1和0)

腐蚀操作的标准范式

# 定义腐蚀操作的结构元素
kernel = np.ones((3, 3), np.uint8)  # 可以调整结构元素的大小和形状

# 进行腐蚀操作
eroded_image = cv2.erode(image, kernel, iterations=1)

初始化核的大小,越大一次性比较的区域越大,则一次迭代腐蚀的区域会越大,定义迭代次数,即对输入进行多少次腐蚀。

腐蚀前后结果对比

def read_img(img_path, mode=cv2.IMREAD_COLOR):
    """

    :param mode:
    :param img_path: 图像路径
    :return: array
    """
    return cv2.imread(img_path, mode)


def img_show(name, img):
    """

    :param name: 窗口名称
    :param img: 图像数据array
    """
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    img_path_3 = '780.jpg'
    # 默认读取BGR
    image_3 = read_img(img_path_3)
    img_3 = cv2.resize(image_3, (224, 224))
    # 腐蚀操作
    kernel = np.zeros((5, 5), np.uint8)
    erosion = cv2.erode(img_3, kernel, iterations=1)
    result = np.hstack((img_3, erosion))
    img_show('==', result)

结果:
opencv图像腐蚀,OpenCV图像处理,opencv,python,人工智能


不同腐蚀次数结果对比

def read_img(img_path, mode=cv2.IMREAD_COLOR):
    """

    :param mode:
    :param img_path: 图像路径
    :return: array
    """
    return cv2.imread(img_path, mode)


def img_show(name, img):
    """

    :param name: 窗口名称
    :param img: 图像数据array
    """
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    img_path_3 = '780.jpg'
    # 默认读取BGR
    image_3 = read_img(img_path_3)
    img_3 = cv2.resize(image_3, (224, 224))
    # 腐蚀操作
    kernel = np.zeros((5, 5), np.uint8)
    erosion_1 = cv2.erode(img_3, kernel, iterations=1)
    erosion_2 = cv2.erode(img_3, kernel, iterations=2)
    erosion_3 = cv2.erode(img_3, kernel, iterations=3)
    result = np.vstack((erosion_1, erosion_2, erosion_3))
    img_show('--', result)

opencv图像腐蚀,OpenCV图像处理,opencv,python,人工智能
迭代次数越多,腐蚀程度越大,迭代次数在一定程度上等效于窗口大小


膨胀操作

膨胀操作原理(腐蚀的逆操作)

初始化一个核(初始化大小和尺寸),类似于一个滑动窗口,在目标图像上面进行遍历,若这个窗口内图像的像素都大于或者都小于窗口元素(都为前景或者背景)则不进行操作,若不同,则将窗口内对应的图像像素进行膨胀操作(将窗口内的图像元素替换为窗口内图像元素的最大值)。即若窗口内的图像像素相同,不进行操作,若不同,则将将窗口内的图像元素替换为窗口内图像像素的最大值.(腐蚀膨胀操作一般应用于灰度图或者二值图,所有最大值与最小值一般分别为1和0)

标准范式

    kernel = np.ones((5, 5), np.uint8)
    erosion = cv2.dilate(img_3, kernel, iterations=1)

样例

def read_img(img_path, mode=cv2.IMREAD_COLOR):
    """

    :param mode:
    :param img_path: 图像路径
    :return: array
    """
    return cv2.imread(img_path, mode)


def img_show(name, img):
    """

    :param name: 窗口名称
    :param img: 图像数据array
    """
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    img_path_3 = '780.jpg'
    # 默认读取BGR
    image_3 = read_img(img_path_3)
    img_3 = cv2.resize(image_3, (224, 224))
    # 随机生成噪声数据
    noise = np.random.normal(0, 1, img_1.shape).astype(np.uint8)
    # 腐蚀操作
    kernel = np.ones((5, 5), np.uint8)
    erosion = cv2.dilate(img_3, kernel, iterations=1)
    result = np.hstack((img_3, erosion))
    img_show('==', result)

    erosion_1 = cv2.dilate(img_3, kernel, iterations=1)
    erosion_2 = cv2.dilate(img_3, kernel, iterations=2)
    erosion_3 = cv2.dilate(img_3, kernel, iterations=3)
    result = np.vstack((erosion_1, erosion_2, erosion_3))
    img_show('--', result)

膨胀一次
opencv图像腐蚀,OpenCV图像处理,opencv,python,人工智能
膨胀多次
opencv图像腐蚀,OpenCV图像处理,opencv,python,人工智能

总结

图像选的不太合适呀,对于膨胀和腐蚀原理的解释和官方的不太一致,是我自己的理解。总得来说,腐蚀/膨胀操作就是通过一个滑动窗口,若滑动窗口内图像的元素不完全一致,则执行膨胀或者腐蚀,将窗口内图像的像素置为前景或者背景,一般应用于灰度图和二值图

若理解有误,欢迎大家指正文章来源地址https://www.toymoban.com/news/detail-771137.html

到了这里,关于Opencv基础操作-腐蚀操作-膨胀操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv 图像腐蚀膨胀 erode dilate

    2024年02月16日
    浏览(39)
  • OpenCV 入门教程:膨胀和腐蚀操作

    膨胀和腐蚀是图像处理中常用的形态学操作,用于改变图像的形状和结构。在 OpenCV 中,膨胀和腐蚀是基于结构元素的像素操作,可以用于图像增强、边缘检测、图像分割等多个领域。本文将以膨胀和腐蚀操作为中心,为你介绍使用 OpenCV 进行形态学操作的基本步骤和实例。

    2024年02月13日
    浏览(28)
  • 【OpenCv • c++】形态学技术操作 —— 腐蚀与膨胀

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月04日
    浏览(34)
  • python-opencv之形态学操作(腐蚀和膨胀)原理详解

    Removing noise. Isolation of individual elements and joining disparate elements in an image. Finding of intensity bumps or holes in an image. 最基本的形态操作是侵蚀和扩张。让我们更详细地了解这些操作。 原理 它会侵蚀前景物体的边界,并从图像中移除小规模的细节,但同时会减少感兴趣区域的大小。

    2024年02月05日
    浏览(30)
  • 08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)

    目录 前言 一、膨胀(Dilation)与 腐蚀(Erosion) 二、形态学操作 1、开操作(Opening) 2、闭操作(Closing) 3、形态学梯度(Morphological Gradient) 4、顶帽 ( top hat) 5、黑帽 ( black hat) 6、相关的API 7、代码演示 三、形态学操作应用-提取水平与垂直线 1、原理方法 2、实现步骤

    2024年01月17日
    浏览(26)
  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的闭运算),其中: 左图是原始图像。 中间的图是对原

    2024年02月14日
    浏览(49)
  • Opencv 图像处理:图像基础操作与灰度转化

    本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。 1.图像格式 图像压缩比: 通过编码器压缩后的图象数字大小和原图象数字大小的压缩比。 BMP 格式 Windows系统下的 标准位图格式 ,

    2024年02月04日
    浏览(34)
  • opencv膨胀腐蚀

      OpenCV 是一个开源的计算机视觉库,它包含了许多图像处理的功能,其中膨胀和腐蚀是两种常用的形态学操作。 膨胀(Dilation):膨胀操作是将图像中的高亮区域(白色像素)扩张,从而填充低亮区域(黑色像素)。这可以用于消除图像中的噪声,连接相邻的物体等。在 

    2024年02月06日
    浏览(41)
  • 图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现

    目录 一、为什么要进行图像处理? 二、图像形态学的四种基本操作 1、图像膨胀 1.1、基本概念 1.2、膨胀函数代码展示 2、图像腐蚀 2.1、基本概念 2.2、腐蚀函数代码展示 3、图像开运算 3.1、基本概念 3.2、开运算函数代码展示 4、图像闭运算 4.1、基本概念 4.2、闭运算函数代码

    2024年02月04日
    浏览(30)
  • 【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算

    常用的形态学操作如腐蚀、膨胀、开运算、闭运算等,可以帮助我们解决一下图像不连接或消除图像中某些不想要的连接,对于图像处理使用方便,效果明显。本文通过示例对这些功能和效果进行演示,以帮助大家理解和使用。 cv2.morphologyEx 是 OpenCV 中的一个函数,用于执行

    2024年02月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包