我最近注意到 cv2.imread 改變了圖像的像素值。我正在做分割,因此像素值很重要,因為不同的像素值顯示不同的標簽。我正在使用下面的代碼,這里我的輸入圖像是蒙版的黑白圖像(像素值只有 0 和 1,因為我在 matlab 中讀取它們以確保。)但是當我打印 original_mask 的像素值時,我看到像素值已更改并涵蓋許多不同的值。任何幫助是極大的贊賞。此外,當我打印 original_image.shape 時,我看到圖像是 RGB,這意味著有 3 個通道(k、k、3)而不是 1 個通道?。。?! original_mask = cv2.imread(mask_dir + '/'+lists.iloc[i, 0] + '.png') print(original_mask, "original_masklllll") print(original_mask.shape, "original_mask") resized_mask = cv2.resize(original_mask, (256, 256)) print(resized_mask.shape, "resized_mask") print(resized_mask, "resized_mask") print(resized_mask[:, :, 0], "resized_mask[:, :, 0]")
2 回答

森欄
TA貢獻1810條經驗 獲得超5個贊
有一個默認的第二個參數會cv2.imread()
導致 3 通道圖像。在單通道源圖像的情況下,通過
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
或者,在任意圖像的情況下,通過
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
將導致單個通道。
添加回答
舉報
0/150
提交
取消