问题描述
我正在尝试使用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])
解决方法
正如其他人在评论中指出的那样,您试图将规范化的图像保存在域[-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)