2015-05-05 7 views
0

У меня есть изображение глубины 16 руки человека после порога. Я хочу восстановить некоторые геометрические функции как контур, выпуклый корпус и т. Д., Но все эти функции работают с 8 или 32-битными изображениями, поэтому мне нужно преобразовать. Я работаю на python!Как я могу преобразовать 16-битное изображение глубины (PNG-формат) в 32-битный?

Я попытался с некоторой функцией открытия сорта, как

img32 = np.array(thresh, dtype=np.float32) # This line only change the type, not values 
img32 *= 65536 # Now we get the good values in 32 bit format 
print img.dtype 

, но я всегда имею в 16 UINT изображение.

+0

, связанные, вероятно, ответ на ваш вопрос: http://stackoverflow.com/q/24444334 –

+0

Что такое формат изображения? Он сжатый или сырой? – Spirine

+0

@RobertHarvey Привет! Я просто попробовал таким же образом более или менее, я думаю :) но ничего ... @ Spirine Привет, да, это сжато, это образ из kinect, сохраненный как png, который я использую, чтобы сделать некоторый тест для моего дипломный диплом. Это изображение глубины 16uint, которое я обработал бинаризацией с порогом otsu, и теперь у меня есть черно-белое изображение, в котором я хочу найти некоторые геометрические функции в opencv, но для многих функций, которые мне нужны, нужны 8 или 32-битные изображения. – Giulio

ответ

0

Я не верю, что PNG поддерживает данные с плавающей запятой, поэтому я не уверен, какой формат вы ожидаете от вывода?

Если исходный 32-разрядный плавающий RGB в порядке, вы можете использовать ImageMagick, который установлен на большинстве дистрибутивов Linux и легко доступен для OS X и Windows. Команда будет

convert input.png -depth 32 -define quantum:format=floating-point rgb:out.rgb 

Например, если вы создаете 1x1 белое изображение, как этот

convert -size 1x1 xc:white -depth 32 -define quantum:format=floating-point rgb:out.rgb 

вы получите 12-байтовый файл как этот

xxd out.rgb 
0000000: 0000 803f 0000 803f 0000 803f 

Если вы создаете 1x1 черное изображение, подобное этому

convert -size 1x1 xc:black -depth 32 -define quantum:format=floating-point rgb:out.rgb 

Вы получаете 12-байтовый файл как этот

xxd out.rgb 
0000000: 0000 0000 0000 0000 0000 0000 
+0

Извините! что float32, который я написал, ошибочен, мне нужен 32-выводный вывод! 8 uint, может быть, тоже хорошо, но я не хочу потерять слишком много информации – Giulio

 Смежные вопросы

  • Нет связанных вопросов^_^