使用opencv將圖片轉為灰度圖主要有兩種方法,第一種是將彩色圖轉為灰度圖,第二種是在使用OpenCV讀取圖片的時候直接讀取為灰度圖。將彩色圖轉為灰度圖
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#獲取圖片的寬和高
width,height = img.shape[:2][::-1]
#將圖片縮小便於顯示觀看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#將圖片轉為灰度圖
img_gray = cv2.cvtColor(img_resize,cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3)
img_gray shape:(337, 600)
使用opencv讀取圖片的時候,預設使用的是BGR來讀取圖片的,可以看到原始讀取的圖片是3通道的,經過轉換之後變成了單通道。
直接將圖片採用灰度圖的方式進行讀取
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#獲取圖片的寬和高
width,height = img.shape[:2][::-1]
#將圖片縮小便於顯示觀看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#讀取灰度圖
img_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
#將圖片縮小便於顯示觀看
img_gray = cv2.resize(img_gray,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3)img_gray shape:(337, 600)