【发布时间】:2021-08-31 10:23:26
【问题描述】:
我的最终用户正在读取图像,将它们转换为灰度并使用以下代码将它们作为 numpy 数组打包成 H5 文件:
image = Image.open(imageFilename)
greyscaleImage = image.convert("L")
imageData = np.asarray(greyscaleImage)
if convertTo16Bit:
imageData16bit = imageData.astype(np.uint16)
imageData16bit = imageData16bit*8
imageData = imageData16bit
h5Filename = makeFilename(imageId, appendToName)
h5FullPath = os.path.join(filePath, h5Filename)
h5file = h5py.File(h5FullPath, "w")
dset = h5file.create_dataset("image", data=imageData)
然后我如下读取这些H5文件:
if args.file_types == 'image':
image = cv2.imread(os.path.join(args.input, filename), cv2.IMREAD_COLOR)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
elif args.file_types == 'h5, hdf5':
hf = h5py.File(os.path.join(args.input, filename), "r")
key = list(hf.keys())[0]
data = np.array(hf[key])
hf.close()
image = cv2.cvtColor(np.uint16(data), cv2.COLOR_GRAY2RGB)
plt.axis('off')
plt.imshow(image)
plt.show()
我需要转换为 RGB,然后在对象检测模型中使用它们。 当我阅读 H5 文件并查看图像时,它们丢失了信息,并且模型不执行检测以及使用原始 jpg 时。
请有人帮助我了解如何在不丢失任何信息的情况下读取 H5 文件?
【问题讨论】:
-
很难弄清楚你真正想要做什么。您从图像开始,不清楚它是彩色还是灰度,以及它是 8 位还是 16 位。然后您丢弃所有颜色信息 - 为什么?然后你将它乘以 8 没有明显的原因,这不会使它比以前更好或更多的 16 位。然后你把它写进 hdf5 - 为什么?然后你试着假装它不是颜色......也许你可以从第一原则解释你从什么开始,最后你想要什么。谢谢。
标签: python numpy opencv image-processing hdf5