圖像直方圖就是用來統計圖像像素值分布的。
灰度圖分布
讀取灰度圖
phone = cv2.imread('phone.png', cv2.IMREAD_GRAYSCALE)
a = phone.ravel()
plt.hist(a, bins=256)
plt.show()
如何可以獲得當前像素值分布
讀取各通道的像素值分布
img = cv2.imread('phone.png')
colors = ('b', 'g', 'r')
for i, col in enumerate(colors):histr = cv2.calcHist([img], [i], None, [256], [0, 256])plt.plot(histr, color=col)
plt.show()
加上掩膜
這個就是給一張圖片(黑白圖片),與我們目標圖片相加,然后白色部分的圖像就會得到保留,而黑色就變成了黑色。
phone = cv2.imread('phone.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow('phone',phone)
cv2.waitKey(0)
mask = np.zeros(phone.shape[:2],np.uint8)
mask[50:530,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, [16], [0, 256])
plt.plot(Phone_hist_mask)
plt.show()
例如這樣一個掩膜
與我們圖像相加后
這里我們還可以把掩膜設置為一個輪廓,那么就可以讀取輪廓了。