python 为什么cv2.imwrite方法为mnist测试图像数据集写入黑色正方形?

3lxsmp7m  于 2023-02-21  发布在  Python
关注(0)|答案(2)|浏览(154)

我正在尝试用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])
mmvthczy

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)

dz6r00yl

dz6r00yl2#

这个想法是正确的,但纠正的方式却不是:
img = cv2.imwrite('img.jpg ',(测试图像[0] * 255 + 0.5).类型(' int '))

相关问题