python统计图像直方图_计算机视觉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)
總結
以上是生活随笔為你收集整理的python统计图像直方图_计算机视觉7-像素点直方图统计、掩膜图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: miui论坛电脑版下载(miui论坛官网
- 下一篇: 【数字信号处理】复数的另一种思考之平均风