【问题标题】:read and display raw image using python使用python读取和显示原始图像
【发布时间】:2013-02-10 17:14:11
【问题描述】:

我想尝试使用 spyder python 查看图像:

skydrive share 图片是:

  • uint16(10 位)
  • 宽度:1376 像素,高度:960 像素
  • 没有标题
  • 拜耳图案蓝绿、绿红

什么python脚本适合?

谢谢。

【问题讨论】:

  • 如果您遇到问题,请先尝试一下,然后发布代码 sn-p 或错误
  • 看here
  • 另请注意,这是关于“图像处理”而不是“处理”编程语言。
  • 您可以将其分为 3 或 4 个步骤,每个步骤都是一个问题。 1)如何读取图像。 2)拜耳去马赛克。 3) 从线性色彩空间转换为经过伽马校正的东西,例如 sRGB。 4) 应用白平衡或色彩校正。
  • 这是我从 [link]kyb.tuebingen.mpg.de/?id=227 fin = open('001.raw', 'rb') s = fin. read() fin.close() arr = array.array('H', s) arr.byteswap() img = numpy.array(arr, dtype='uint16').reshape(960,1376) imshow(img,灰色());

标签: python image-processing


【解决方案1】:

这是一种方法。

从导入开始

from matplotlib import pyplot as plt
import numpy as np

现在分配空间

image = np.empty((1376,960), np.uint16)

将图像读入你的数组:

image.data[:] = open('20_1-20ms.raw').read()

显示它:

plt.imshow(image)

【讨论】:

  • 据我所知,这不适用于颜色数据(即,一组 3 张图像,每种颜色一张)。 Matplotlib 的 imshow 需要浮点数或 int8s 才能生成合理的 RGB 图像。尝试用 int16s 调用它会产生乱码。您必须将 10 位数据位移为 8 位数据,或转换为浮点数,例如 im_float = im_int / (2**10 - 1.)。
  • 我试过这个来读取一个 .raw 文件,但我收到了这个错误:NotImplementedError: memoryview slice assignments are currently limited to ndim = 1.
猜你喜欢
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
相关资源
最近更新 更多