图像掩码是一种二值图像,用于控制图像处理操作的应用区域。通过将掩码与原图像进行按位与操作,可以提取或屏蔽图像的特定部分。直方图是图像处理中的一个重要工具,用于分析图像的灰度分布。
实验步骤
- 使用OpenCV读取图像文件“phone.png”为灰度图像。
phone=cv2.imread("phone.png",cv2.IMREAD_GRAYSCALE)
- 创建一个与原图像大小相同的掩码,并在指定区域设置掩码值为255。
mask=np.zeros(phone.shape[:2],np.uint8) mask[50:350,100:470]=255 cv2.imshow("mask",mask)
- 应用掩码,通过按位与操作提取掩码区域的图像。
phone_mask=cv2.bitwise_and(phone,phone,mask=mask) cv2.imshow("phone_mask",phone_mask)
- 使用掩码计算提取区域的灰度直方图。
phone_hist_mask=cv2.calcHist([phone],[0],mask,[256],[0,256])
- 使用Matplotlib绘制直方图。
plt.plot(phone_hist_mask)
实验结果
完整代码
phone=cv2.imread("phone.png",cv2.IMREAD_GRAYSCALE)
mask=np.zeros(phone.shape[:2],np.uint8)
mask[50:350,100:470]=255
cv2.imshow("mask",mask)
cv2.waitKey(0)phone_mask=cv2.bitwise_and(phone,phone,mask=mask)
cv2.imshow("phone_mask",phone_mask)
cv2.waitKey(0)phone_hist_mask=cv2.calcHist([phone],[0],mask,[256],[0,256])
plt.plot(phone_hist_mask)
cv2.waitKey(0)
plt.show()