Python 如何在不丢失信息的情况下保存图像数据,同时使其可视化

Python 如何在不丢失信息的情况下保存图像数据,同时使其可视化,python,numpy,image-processing,fft,watermark,Python,Numpy,Image Processing,Fft,Watermark,我正在尝试实现频谱图像水印,使用快速傅立叶变换,一切都很好地工作,除了我无法保存生成的水印图像而不会遇到麻烦。由于该应用程序是用户友好的,因此不允许对照片查看进行任何黑客攻击。用户必须能够下载生成的文件并按原样查看,无需任何进一步修改 代码基本上是这样的: import cv, imageio image = cv2.imread(imagePath, cv2.IMREAD_UNCHANGED) watermark = cv2.imread(wmPath, cv2.IMREAD_UNCHANG

我正在尝试实现频谱图像水印,使用快速傅立叶变换,一切都很好地工作,除了我无法保存生成的水印图像而不会遇到麻烦。由于该应用程序是用户友好的,因此不允许对照片查看进行任何黑客攻击。用户必须能够下载生成的文件并按原样查看,无需任何进一步修改

代码基本上是这样的:

import cv, imageio

image = cv2.imread(imagePath, cv2.IMREAD_UNCHANGED)
watermark = cv2.imread(wmPath, cv2.IMREAD_UNCHANGED)

# result is float64, due to the transition from the frequency spectrum to spatial
result = embed_watermark(image, watermark)
imageio.imwrite('result.tiff', result)
result2 = imageio.imread('result.tiff') # Still float64, thanks to tiff format
detection = detect_watermark(result, image)
因此,代码可以正常工作,它可以防止数据丢失,这要归功于允许浮点像素值的tiff容器。但是,无法使用MS Windows中包含的任何照片查看器打开保存的文件('result.tiff')。如果我使用任何其他常用的容器(jpeg、png、bmp),我可以可视化生成的图像,但最终会丢失水印信息

我已经尝试过讨论和阅读解决方案,但我似乎并没有对这一点感到困惑。我还尝试使用FIJI打开图像(按照的建议,但我得到了这个错误:“ImageJ只能打开8位和16位/通道图像(64)”


我如何才能保存文件而不丢失水印数据,也不丢失打开结果文件进行可视化的能力?

因此,我尝试了你的建议,甚至斐济也给了我一个错误;我将用细节更新问题。处理浮点数据的图像显示工具不多。这不是一个问题保存它,但你需要一个工具来显示它。如果我是你,我会编写一个Python程序来显示你的图像。你绝对需要TIFF格式的图像吗?你说当保存为其他格式之一时,你会丢失水印信息。因此,这里的问题是水印信息太微不足道而无法显示吗每个通道只有8位?还是检测无法处理非浮点数据?上面代码中的注释听起来像是后者,但这很容易解决。我怀疑是前者,在这种情况下,您应该在问题中明确说明。@Keving我愿意接受任何其他建议,实际上我求助于TIFF因为它是唯一可以表示浮点数据的格式(据我所知)