欢迎访问 生活随笔!

生活随笔

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

编程问答

OpenCV 礼帽和黑帽

发布时间:2025/5/22 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 OpenCV 礼帽和黑帽 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 礼帽运算
  • 原图像与“开运算“的结果图之差,如下式计算:

    因为开运算带来的结果是放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作和选择的核的大小相关。

    礼帽运算用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。

  • 黑帽运算
  • 为”闭运算“的结果图与原图像之差。数学表达式为:

    黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。

    黑帽运算用来分离比邻近点暗一些的斑块。

    cv.morphologyEx(img, op, kernel)
    • img: 要处理的图像

    • op: 处理方式:

      • cv.MORPH_OPEN:开运算
      • cv:MORPH_CLOSE:闭运算
      • cv:MORPH_TOPHAT:礼帽运算
      • cv:MORPH_BLACKHAT:黑帽运算
    • 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_TOPHAT, kernel) # 礼帽运算 cvClose = cv.morphologyEx(img2, cv.MORPH_BLACKHAT, kernel) # 黑帽运算# 4 图像显示 fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8)) axes[0, 0].imshow(img1) axes[0, 0].set_title("原图") axes[0, 1].imshow(cvOpen) axes[0, 1].set_title("礼帽运算结果") axes[1, 0].imshow(img2) axes[1, 0].set_title("原图") axes[1, 1].imshow(cvClose) axes[1, 1].set_title("黑帽运算结果") plt.show()

    总结

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

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