这里使用的掩膜为自定义大小的矩形
import cv2
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
#读取图像
img = cv2.imread(r'C:\Users\thorne\PycharmProjects\biyesheji\image\101.jpeg')
#处理图像时需转换为RGB图像
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#设置掩膜格式
mask = np.zeros(img.shape[:2], np.uint8)
#设置掩膜位于原图的位置,设置为白色,白色区域为要统计直方图部分
mask[100:600, 100:img.shape[1]] = 255
masked_img = cv2.bitwise_and(img, img, mask=mask)
#掩膜直方图计算
hist_mask = cv2.calcHist([img], [0], mask, [256], [0,256])
#因为mask_img格式为RGB,而plt绘制图像的格式为BRG,这里转换为BRG图像方便显示图像时颜色正确
masked_img_BRG = cv2.cvtColor(masked_img, cv2.COLOR_RGB2BGR)
#设置图像显示大小
plt.figure(figsize=(8, 6))
#设置字体
matplotlib.rcParams['font.sans-serif']=['SimHei']
#显示原图
plt.subplot(221)
plt.imshow(img_rgb, 'gray')
plt.axis('off')
plt.title("原图")
#绘制掩膜
plt.subplot(222)
plt.imshow(mask, 'gray')
plt.axis('off')
plt.title("(b)掩膜")
#绘制掩膜设置后的图像
plt.subplot(223)
plt.imshow(masked_img_BRG,'gray')
plt.axis('off')
plt.title("(c)图像掩膜")
#绘制掩膜的直方图
plt.subplot(224)
plt.plot(hist_mask)
plt.title("(d)直方图曲线")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
?
|