【问题标题】:How to read raw image in Python and plot as an image如何在 Python 中读取原始图像并绘制为图像
【发布时间】:2017-11-04 13:16:14
【问题描述】:

我正在尝试读取原始图像文件,但存储的图像数组似乎是一维的。不知道如何读取原始文件并绘制它。任何帮助将不胜感激

图片链接TestImage1c.raw

from scipy import misc
from scipy import ndimage
import numpy as np
import matplotlib.pyplot as plt
import math

A = np.fromfile("TestImage1c.raw", dtype='int16', sep="")
print("A.shape: %d", A.shape)
print("A: ", A)
img_gray = np.dot(A[..., :3], [0.30, 0.59, 0.11])
print("img_gray :", img_gray)
print("img_gray shape: ", img_gray.shape)
print("img_gray size: ", img_gray.size)
plt.imshow(img_gray, cmap="gray")
plt.show()

OUTPUT:

D:\Python36\python.exe D:/PycharmProjects/First/readrawimage.py
A.shape: %d (1143072,)
A:  [-27746 -24987  26514 ...,  28808 -31403  18031]
img_gray : -20149.59
img_gray shape:  ()
img_gray size:  1
Traceback (most recent call last):
  File "D:/PycharmProjects/First/readrawimage.py", line 33, in <module>
    plt.imshow(img_gray, cmap="gray")
  File "D:\Python36\lib\site-packages\matplotlib\pyplot.py", line 3080, in 
  imshow
    **kwargs)
  File "D:\Python36\lib\site-packages\matplotlib\__init__.py", line 1710, in 
  inner
    return func(ax, *args, **kwargs)
  File "D:\Python36\lib\site-packages\matplotlib\axes\_axes.py", line 5194, 
  in imshow
    im.set_data(X)
  File "D:\Python36\lib\site-packages\matplotlib\image.py", line 604, in 
  set_data
    raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data

Process finished with exit code 1

【问题讨论】:

  • 感谢您的反馈。这是一张原始图像,所以没有预览图像,也没有第一次上传。虽然我现在已经添加了一个链接。
  • 它是“数字底片”意义上的RAW 图像吗?每个相机制造商都有自己的格式,因此您必须证明细节。此外,在.raw 文件中,始终存在无法处理的标题部分np.fromfile
  • 它是一个原始图像,它的像素是交错的。 R(0,0) G(0,0) B(0,0) R(1,0) G(1,0) B(1,0) R(2,0) G(2,0) B( 2,0)

标签: python numpy matplotlib computer-vision hough-transform


【解决方案1】:

我发现 RAW 文件与 RGB 值交错,是一维数组

R(0,0) G(0,0) B(0,0) R(0,1) G(0,1) B(0,1)

.......

A = np.fromfile("TestImage2c.raw", dtype='int8', sep="")

A = np.reshape(A, (756, 1008, 3))
img_gray = np.dot(A[..., :3], [0.30, 0.59, 0.11])
plt.imshow(img_gray, cmap="gray")
plt.show()

我现在开始获取图像了。

谢谢大家的回复。

【讨论】:

  • 对我来说,A = np.fromfile(img, dtype='int32', sep="") 适用于灰度红外图像。谢谢你:)
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 2010-12-23
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多