首页 > 解决方案 > 如何将 .txt 文件解码为图像格式

问题描述

我有一个包含像素坐标和像素值的 .txt 文件。我试图以 8 位压缩的 png 和 jpeg 格式将其可视化,但我希望它是 16 位图像格式,如 tiff。我尝试以 tiff 格式保存我的图像,但它不是我预期的图像,它有很多噪音,与 png 或 jpeg 相比,当我打开文件时我什至看不到图像。

这是我的代码

import numpy as np
from PIL import Image 
import pandas as pd
from matplotlib import pyplot as plt 



file = open('filename')
data = pd.read_table(file, header=None, skiprows=8, decimal=",")
data = data.iloc[:, :]
rows, cols = data.shape

na = np.array(data)
plt.imshow(na)

plt.imsave('mes.png',an)
na.save('myimg.tif')

实施此操作时我做错了什么,有什么建议或更改吗?感谢您的帮助,感谢您的宝贵时间。

标签: pythonpandasnumpymatplotlibimage-processing

解决方案


问题是您没有将数据标准化为无符号 16 位 TIFF 或 PNG 文件的正确范围 0..65535。

我在这里使用 OpenCV 函数,但您可以使用 Numpy 或直接 Python 来获得相同的结果。因此,在转换为 Numpy 数组后

... your code ...
na = np.array(data)

import cv2
# Normalise (scale) to range 0..65535
sc = cv2.normalize(na, None, alpha=0, beta=65535, norm_type = cv2.NORM_MINMAX, dtype = cv2.CV_16U)

# Save, using any ONE of the following methods
Image.fromarray(sc).save('result.tif')
Image.fromarray(sc).save('result.png')
cv2.imwrite('result.tif', sc)
cv2.imwrite('result.png', sc)

在此处输入图像描述


推荐阅读