[英]Convert Numpy array to image by using CV2 or PIL
我正在嘗試使用CV2或PIL庫將我的數組轉換為圖像,在兩個庫中,我得到的圖像具有混合顏色。
這是我嘗試使用CV2將Numpy數組轉換為圖像的方式:
for i in range(len(batch_tx)):
cls_pred = sess.run(y_pred_cls, feed_dict={x: batch_tx})
cls_true = sess.run(tf.argmax(batch_ty, 1))
img = cv2.resize(batch_tx[i], (FLAGS.img_size, FLAGS.img_size))
img = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2RGB)
cv2.imwrite(
'./saveImage/img' + str(i) + ': ' + 'True: ' + str(cls_true[i]) + ', Pred:' +
str(cls_pred[i]) + '.JPEG', img)
對於我的所有圖像,輸出如下圖所示(這是一張船的圖像)
我也嘗試過PIL庫並獲得相同的輸出。
batch_tx[1]
是我數據集中第一個圖像的數組,類型為numpy.ndarray,形狀為(96,96,3)
任何的想法?
提前致謝。
大多數OpenCV函數僅適用於BGR圖像而不適用於RGB,例如imshow或imwrite。 OpenCV將為您完成工作,以正確的方式將其保存為JPG圖像,可由任何其他應用程序加載。 如果你有另一個訂單,那么該功能將不會知道這一點,並用錯誤的順序保存。
刪除此行:
img = cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2RGB)
應該為你做的工作。
我的猜測是,格式不正確(np.uint8),因為你在我剛剛告訴你刪除的行中使用它。 因此,您還必須將保存部分更改為:
cv2.imwrite(
'./saveImage/img' + str(i) + ': ' + 'True: ' + str(cls_true[i]) + ', Pred:' +
str(cls_pred[i]) + '.JPEG', img.astype(np.uint8))
現在一切都應該有效。 這個圖像可以在PIL的另一個時刻加載到任何其他庫中,如果你想要相同的話,你將獲得幾乎相同的圖像(JPG是有損壓縮),嘗試將它們保存為具有無損壓縮的另一種格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.