当前位置:   article > 正文

OpenCV-41 使用掩膜的直方图

OpenCV-41 使用掩膜的直方图

一、掩膜

掩膜即为与原图大小一致的黑底白框图。

如何生成掩膜?

  • 先生成一个全黑的和原始图片大小一样大的图片。mask = np.zeros(img.shape, np.uint8)
  • 将想要的区域通过索引方式设置为255.mask[100:200, 200:300]

示例代码如下:

  1. import cv2
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. lena = cv2.imread("beautiful women.png")
  5. # 变成黑白图像
  6. gray = cv2.cvtColor(lena, cv2.COLOR_BGR2GRAY)
  7. # 生成掩膜图像
  8. mask = np.zeros(gray.shape, np.uint8)
  9. # 设计想要统计直方图的区域
  10. mask[200:500, 200:500] = 255
  11. # 进行与运算
  12. # gray与gray进行与运算还是gray, mask的作为为,gray先于gray做与运算,结果再和mask做与运算
  13. img_and = cv2.bitwise_and(gray, gray, mask=mask)
  14. hist_mask = cv2.calcHist([gray], [0], mask, [256], [0,255])
  15. hist_gray = cv2.calcHist([gray], [0], None, [256], [0,255])
  16. plt.plot(hist_mask, label = "mask")
  17. plt.plot(hist_gray,label = "gray")
  18. plt.legend()
  19. plt.show()
  20. cv2.imshow("mask", mask)
  21. cv2.imshow("gray", gray)
  22. cv2.imshow("and", img_and)
  23. cv2.waitKey(0)
  24. cv2.destroyAllWindows()

输出结果如下:

注意点:

0与任何东西进行与运算都为0

255与非0的进行与运算还是255

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/102981
推荐阅读
相关标签
  

闽ICP备14008679号