有個小問題希望大家幫幫我。我知道要在不使用 numpy 的情況下將 RGB 影像轉換為灰度,我們可以使用:
img = cv2.imread(input_file, cv2.IMREAD_COLOR)
r, g, b = img[:, :, 0], img[:, :, 1], img[:, :, 2]
img_gray = 0.2989 * r 0.5870 * g 0.1140 * b
現在我想通過 BGR 比例讀取影像,然后將該 BGR 影像轉換為不使用的灰度cv2.COLOR_BGR2GRAY,我該如何使用上面的類似代碼來做到這一點?
uj5u.com熱心網友回復:
OpenCV 會以 BGR 順序將檔案讀??入記憶體,即使它在磁盤上是 RGB。這就是它的作業方式。因此,您需要將第二行更改為:
b, g, r = img[:, :, 0], img[:, :, 1], img[:, :, 2]
然后您的第三行將正常作業,盡管您可能希望使用以下方式制作無符號 8 位整數:
img_gray = (0.2989 * r 0.5870 * g 0.1140 * b).astype(np.uint8)
順便說一句,你實際上可以numpy像這樣更快地做到這一點:
import numpy as np
grey = np.dot(img[...,::-1], [0.299, 0.587, 0.114]).astype(np.uint8)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314785.html
下一篇:MSSQL:'!'附近語法不正確
