У меня есть странный файл .raw в следующем формате, который мне нужно открыть для проекта класса. Он имеет следующую структуру на примере фотографии 487x414:

  • Количество строк - два байта без знака (01E7)
  • Количество столбцов составляет два неподписанных байта (019E)
  • Количество бит, представляющих каждый пиксель (это всегда будет 8)
  • Фактические данные изображения

Проект состоит в том, чтобы запустить обнаружение краев в файле .raw, но профессор сказал, что я смогу открыть его с помощью любого старого программного обеспечения для редактирования изображений (очевидно, он ожидает, что мне предложат открыть окно, в котором я установлю количество байтов в заголовок), поэтому я попробовал следующее безрезультатно:

  • Paint.net
  • Photoshop Elements
  • Adobe Lightroom
  • ImageMagick
  • канитель
  • DCRaw

У меня двойная загрузка Ubuntu и Windows, поэтому, если у кого-то есть какие-либо идеи о том, как я могу отобразить этот файл (в настоящее время я пытаюсь загрузить его в OpenCV в виде гистограммы, но мне хотелось бы кое-что проверить для своего результата против), был бы очень признателен.

1 ответ1

0

В итоге мне пришлось написать собственный скрипт Python, который вы можете найти здесь. Вот важная часть.

#Load the raw file
f = open(filename,'rb') # switch to command line args later
#Because the byte order is weird
a = f.read(1)
b = f.read(1)
#First line is rows
rows = int((b+a).encode('hex'), 16)
a = f.read(1)
b = f.read(1)
#Second line is columns
cols = int((b+a).encode('hex'), 16)
#Last byte is encoding, but we're just going to ignore it
f.read(1)
#And everything else is 8 bit encoded, so let's load it into numpy and display it with matplotlib
bin_image = np.fromstring(f.read(), dtype=np.uint8)
#Change the shape of the array to the actual shape of the picture
bin_image.shape = (cols, rows)

fig = pylab.figure()
#Display the original image
fig.add_subplot(1,4,1)
pylab.imshow(bin_image, cmap=cm.gray)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .