我目前正在嘗試獲取影像并將其保存到每個顏色通道 (RGB) 的陣列中。當我將影像附加到串列時,它會將每個像素的三個顏色通道存盤在一起。我想知道如何將它們分開?
當前代碼
img = cv2.imread(f'Data/keyboard/00{i 1:02d}.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR -> RGB
imgdata.append([img,"keyboard"])
print(trainData[0][0][0])
電流輸出
[185, 233, 255]
[185, 233, 255]
[185, 233, 255]
...
[189 229 254]
需要的格式
Red = [[185,185,16,...,189],[185,185,16,...,185],...]
Green = [[233,233,233,...,229],[233,233,233,...,229],...]
Blue = [[255,255,255,...,254],[255,255,255,...,254],...]
uj5u.com熱心網友回復:
使用加載影像cv2并執行顏色轉換后,您可以使用img.shapeW、H、3 的形式驗證其尺寸,其中 3 代表 R、G 和 B 顏色通道。
現在要分離顏色,您可以首先(W*H, 3)使用以下代碼將影像資料重塑為二維
w, h, channels = img.shape
img_reshaped = img.reshape((w * h, channels))
這樣每個條目將是[R, G, B]. 但是,為了只提取R,G或者B,你會分別使用0,1,或2的第二維指標。
例如,要提取所有紅色值,您可以使用
reds = img_reshaped[:, 0]
如果您需要將此擴展到多個影像,您可以呼叫該extend()函式或使用初始化為正確大小的 NumPy 陣列np.zeros()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/405040.html
標籤:
