使用 CV2 或 PIL 将 Numpy 数组转换为图像
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 是有损压缩)如果您想要相同,请尝试将它们保存为另一种具有无损压缩的格式。
我正在尝试使用 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 是有损压缩)如果您想要相同,请尝试将它们保存为另一种具有无损压缩的格式。