欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV 开闭运算

发布时间:2025/5/22 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 OpenCV 开闭运算 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。

  • 开运算
  • 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。

  • 闭运算
  • 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。

    cv.morphologyEx(img, op, kernel)
    • img: 要处理的图像
    • op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭运算,则设为cv.MORPH_CLOSE
    • Kernel: 核结构
    import numpy as np import cv2 as cv import matplotlib.pyplot as plt# 1 读取图像 img1 = cv.imread("./1.png") img2 = cv.imread("./2.png")# 2 创建核结构 kernel = np.ones((10, 10), np.uint8)# 3 图像的开闭运算 cvOpen = cv.morphologyEx(img1, cv.MORPH_OPEN, kernel) # 开运算 cvClose = cv.morphologyEx(img2, cv.MORPH_CLOSE, kernel) # 闭运算# 4 图像展示 fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8)) axes[0, 0].imshow(img1[:, :, ::-1]) axes[0, 0].set_title("原图") axes[0, 1].imshow(cvOpen[:, :, ::-1]) axes[0, 1].set_title("开运算结果") axes[1, 0].imshow(img1[:, :, ::-1]) axes[1, 0].set_title("原图") axes[1, 1].imshow(cvClose[:, :, ::-1]) axes[1, 1].set_title("闭运算结果") plt.show()

    总结

    以上是生活随笔为你收集整理的OpenCV 开闭运算的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。