我正在尝试用openCV写一个MNIST测试图像,但是它只显示了一个黑色的正方形。我不明白为什么!!
import keras
import numpy as np
import mnist
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.utils import to_categorical
import cv2
train_images = mnist.train_images()
train_labels = mnist.train_labels()
test_images = mnist.test_images()
test_labels = mnist.test_labels()
# Normalize the images.
train_images = (train_images / 255) - 0.5
test_images = (test_images / 255) - 0.5
print(train_images.shape)
#print(test_images.shape)
img = cv2.imwrite( "img.jpg", test_images[0])
2条答案
按热度按时间mmvthczy1#
正如其他人评论中指出的,您试图将归一化图像保存在域[-0.5,0.5]中,而之前保存在域[0,255]中,
cv2.imwrite
不支持此操作,以下是官方帮助:imwrite函数将图像保存到指定的文件中。图像格式是根据文件扩展名来选择的(参见imread()的扩展名列表)。只有8位(或16位无符号(CV_16U),在PNG、JPEG 2000和TIFF的情况下)单通道或3通道(具有'BGR'通道顺序)图像可以使用此函数来保存
在规格化之前保存图像或按如下方式撤消:
img = cv2.imwrite( "img.jpg", (test_images[0] + 0.5) * 255)
dz6r00yl2#
这个想法是正确的,但纠正的方式却不是:
img = cv2.imwrite('img.jpg ',(测试图像[0] * 255 + 0.5).类型(' int '))