opencv学习:图像掩码处理和直方图分析及完整代码

图像掩码是一种二值图像,用于控制图像处理操作的应用区域。通过将掩码与原图像进行按位与操作,可以提取或屏蔽图像的特定部分。直方图是图像处理中的一个重要工具,用于分析图像的灰度分布。

实验步骤

  1. 使用OpenCV读取图像文件"phone.png"为灰度图像。

    python 复制代码
    phone=cv2.imread("phone.png",cv2.IMREAD_GRAYSCALE)
  2. 创建一个与原图像大小相同的掩码,并在指定区域设置掩码值为255。

    python 复制代码
    mask=np.zeros(phone.shape[:2],np.uint8)
    mask[50:350,100:470]=255
    cv2.imshow("mask",mask)
  3. 应用掩码,通过按位与操作提取掩码区域的图像。

    python 复制代码
    phone_mask=cv2.bitwise_and(phone,phone,mask=mask)
    cv2.imshow("phone_mask",phone_mask)
  4. 使用掩码计算提取区域的灰度直方图。

    python 复制代码
    phone_hist_mask=cv2.calcHist([phone],[0],mask,[256],[0,256])
  5. 使用Matplotlib绘制直方图。

    python 复制代码
    plt.plot(phone_hist_mask)

实验结果

完整代码

python 复制代码
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()
相关推荐
~樱小路~1 小时前
网络:华为HCIA学习笔记:ICMP协议
网络·学习·华为
jndingxin1 小时前
OpenCV 图形API(21)逐像素操作
人工智能·opencv·计算机视觉
Fantasydg2 小时前
DAY 38 leetcode 15--哈希表.三数之和
算法·leetcode·散列表
编程绿豆侠2 小时前
力扣HOT100之链表:19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
ゞ 正在缓冲99%…2 小时前
leetcode274.H指数
java·算法·leetcode
程序员小杰@2 小时前
AI前端组件库Ant DesIgn X
开发语言·前端·人工智能
浩哥的技术博客3 小时前
使用MetaGPT 创建智能体(1)入门
人工智能·大模型·智能体
胖哥真不错3 小时前
数据分享:汽车测评数据
python·机器学习·数据分享·汽车测评数据·car evaluation
明月看潮生3 小时前
青少年编程与数学 02-015 大学数学知识点 07课题、数值分析
机器学习·青少年编程·数值分析·编程与数学