计算机视觉7-像素点直方图统计、掩膜图像

1.灰度图的直方图

(1)调用库

import cv2
import matplotlib.pyplot as plt
import numpy as np #创建掩膜时需要

(2)绘图-方法1

img=cv2.imread('F:cat.jpg',0)
plt.hist(img.ravel(),256,[0,256])
plt.show()

 plt.hist是一个画直方图的命令;img.ravel()可以将图片转化成一维数组,直方图的信息都是从这里提取出来的;256是BIN的数目,[0,256]是像素取值范围,相当于在0-256的像素值范围内化了256组(即BIN数)

运行结果:

(3)绘图-方法2

img=cv2.imread('F:cat.jpg',0)
hist=cv2.calcHist([img],[0],None,[256],[0,256])
plt.plot(hist)
plt.show()
绘制一个plot图,plot的信息是从hist中提取,而hist的信息是通过calcHist计算得来的

运行结果如下:

(4)方法2线条颜色修改

img=cv2.imread('F:cat.jpg',0)
hist=cv2.calcHist([img],[0],None,[256],[0,256])
color=('black')
plt.plot(hist,color=color)
plt.show()

运行结果:

 

2.不同颜色通道的直方图

 

img=cv2.imread('F:cat.jpg')
color=('b','g','r')
for i,col in enumerate(color):
    hist=cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(hist,color=col)
    plt.xlim([0,256])
plt.show()

运行结果如下:

 

3.掩膜图像的直方图

1)创建掩膜

mask=np.zeros(img.shape[:2],np.uint8)
print(mask.shape)
mask[111:222,100:400]=255

创建的掩膜和原图一样大小,但是对[111:111,100:400]的矩形框内赋予像素值为255

 

(2)绘图

 

hist_full=cv2.calcHist([img],[0],None,[256],[0,256])
hist_mask=cv2.calcHist([img],[0],mask,[256],[0,256])

plt.plot(hist_full),plt.plot(hist_mask)
plt.xlim([0,256])
plt.show()

运行结果如下:

 

(3)补充说明

掩上膜的图片可通过以下命令绘制出来,单纯地绘制像素点统计图不需要此步骤

masked_img=cv2.bitwise_and(img,img,mask=mask)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值