python如何分析灰度

kboypkb發表於2021-09-11

python如何分析灰度

影像型別:通常我們的數字影像是彩色的3通道RGB影像,R代表紅色,G代表綠色,B代表藍色。

儲存方式:通常是uint8 無符號整數,0~255,當然也有24bits 可以表示更多的顏色,雖然這樣做可以提高影像對於現實世界的一個還原度,但是會增加更多的開銷,因此我們通常還是用8bits

灰度影像:灰度影像在影像處理種有著非常重要的地位,一些常用的操作都會涉及到灰度影像的轉換,邊緣檢測、二值化等這些操作之前通常都是RGB to Gray。

直接給出公式:Gray = 0.2989*R+0.5870*G+0.1140*B

#Python Opencv
#匯入標頭檔案
%matplotlib inline
import matplotlib.pyplot as plt 
import cv2
import numpy as np
 
#讀取影像,opencv讀取影像通道順序為BGR
img=cv2.imread('img.path.jpg')
 
#顯示影像,其中.astype(np.uint8)為了確保資料格式以免無法顯示,plt顯示影像需要為RGB順序
plt.figure(figsize=(15,10))
plt.imshow(cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2RGB))
plt.show()

p1.jpg

img=0.2989*img[:,:,2]+0.5870*img[:,:,1]+0.1140*img[:,:,0]
######
plt.figure(figsize=(15,10))
plt.imshow(img, cmap ='gray')
plt.show()

p2.jpg

#opencv 自帶函式進行轉化
plt.figure(figsize=(15,10))
plt.imshow(cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY),cmap='gray')
plt.show()

p3.jpg

img3=0.2989*img[:,:,2]+0.5870*img[:,:,1]+0.1140*img[:,:,0]
img2=cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY)
print((img3-img2).sum()/(img.shape[0]*img.shape[1]))  ###結果=-0.0072855376781315

對比下,自己用公式得到的灰度圖和opencv自己函式的灰度圖,其實還是不一樣的,應該是計算精度上的差距

更多Python知識,請關注:!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1916/viewspace-2833119/,如需轉載,請註明出處,否則將追究法律責任。

相關文章