Значение слова «измерить» выходные данные DJI SDKPython

Программы на Python
Anonymous
Значение слова «измерить» выходные данные DJI SDK

Сообщение Anonymous »

Я учусь использовать DJI SDK в сценариях Python для анализа содержимого термографических изображений (радиометрические JPG, R-JPG).
Согласно документации, вызов SKD с опцией «измерить» должно создаваться «изображение глобального значения температуры с типом пикселя INT16 или FLOAT32».

Код: Выделить всё

.\dji_irp.exe -s .\DJI_blablabla.JPG -a measure -o measure.raw
Я так и сделал, в результате чего был создан двоичный файл, который можно прочитать с помощью Python. Этот файл содержит список целочисленных значений длиной 655360 элементов. Значения, похоже, идут парами: значения в нечетных позициях варьируются от 1 до 252, а значения в четных позициях могут быть от 1 до 0.

Код: Выделить всё

temps = subprocess.call(['./dji_irp.exe', '-s', path_file, '-a', 'measure', '-o', 'measure.raw'])

with open('measure.raw', 'rb') as f:
file_contents = f.read()
byte_array = np.frombuffer(file_contents, dtype=np.uint8)

print(len(byte_array))
#655360
print(byte_array[:10])
#[69  1 69  1 69  1 78  1 73  1]
Когда они разделены на два массива и изменены на 640x512, они выглядят так:

Код: Выделить всё

print(byte_array[0:40:2])
# [ 69  69  69  78  73  78  73  65  51  56  65  65  65  69  69  65  61  29 233 178]
print(max(byte_array[0::2]))
# 252
print(min(byte_array[0::2]))
# 1
plt.imshow(byte_array[0::2].reshape((512, 640)), cmap='magma')
Изображение

Код: Выделить всё

print(byte_array[1:40:2])
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0]
print(max(byte_array[1::2]))
# 1
print(min(byte_array[1::2]))
#0
plt.imshow(byte_array[1::2].reshape((512, 640)))
Изображение

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


Подробнее здесь: https://stackoverflow.com/questions/789 ... of-dji-sdk

Вернуться в «Python»