当前位置:   article > 正文

Python Opencv实践 - 图像直方图均衡化_python opencv rgb直方图均衡

python opencv rgb直方图均衡
  1. import cv2 as cv
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. img = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
  5. print(img.shape)
  6. #图像直方图计算
  7. #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)
  8. #images:原图像(图像格式为 uint8 或 float32)。当传入函数时应该 用中括号 [] 括起来,例如:[img]。
  9. #channels:同样需要用中括号括起来,它会告诉函数我们要统计那幅图 像的直方图。如果输入图像是灰度图,它的值就是 [0];如果是彩色图像 的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。
  10. #mask: 掩模图像。要统计整幅图像的直方图就把它设为 None。但是如 果你想统计图像某一部分的直方图的话,你就需要制作一个掩模图像,并 使用它。
  11. #histSize:BIN 的数目。也应该用中括号括起来,例如:[256]。
  12. #ranges: 像素值范围,通常为 [0256]
  13. #hist:是一个 256x1 的数组作为返回值,每一个值代表了与次灰度值对应的像素点数目。
  14. #accumulate:是一个布尔值,用来表示直方图是否叠加。
  15. #参考资料:https://blog.csdn.net/yukinoai/article/details/87900860
  16. hist_b = cv.calcHist([img], [0], None, [256], [0,256])
  17. hist_g = cv.calcHist([img], [1], None, [256], [0,256])
  18. hist_r = cv.calcHist([img], [2], None, [256], [0,256])
  19. #显示图像
  20. fig,axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10), dpi=100)
  21. axes[0][0].imshow(img[:,:,::-1])
  22. axes[0][0].set_title("Original")
  23. axes[0][1].set_title("Original Histogram")
  24. axes[0][1].plot(hist_b, color='b')
  25. axes[0][1].plot(hist_g, color='g')
  26. axes[0][1].plot(hist_r, color='r')
  27. #彩色图像直方图均衡化
  28. #cv.equalizeHist(src)
  29. #参考资料:https://blog.csdn.net/qq_37701443/article/details/103564379
  30. def RGBImageHistEqualize(src):
  31. hsv = cv.cvtColor(src, cv.COLOR_RGB2HSV)
  32. channels = cv.split(hsv)
  33. #对亮度通道进行直方图均衡化
  34. cv.equalizeHist(channels[2], channels[2])
  35. hsv = cv.merge(channels)
  36. src = cv.cvtColor(hsv, cv.COLOR_HSV2RGB)
  37. return src
  38. img_hist_equalized = RGBImageHistEqualize(img)
  39. hist_equalized_b = cv.calcHist([img_hist_equalized], [0], None, [256], [0,256])
  40. hist_equalized_g = cv.calcHist([img_hist_equalized], [1], None, [256], [0,256])
  41. hist_equalized_r = cv.calcHist([img_hist_equalized], [2], None, [256], [0,256])
  42. #显示直方图均衡化后的结果
  43. axes[1][0].imshow(img_hist_equalized[:,:,::-1])
  44. axes[1][0].set_title("Equalized")
  45. axes[1][1].set_title("Equalized Histogram")
  46. axes[1][1].plot(hist_equalized_b, color='b')
  47. axes[1][1].plot(hist_equalized_g, color='g')
  48. axes[1][1].plot(hist_equalized_r, color='r')

 

 

 

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

闽ICP备14008679号