У меня есть видеофайл с ИК-камеры. Я хочу разложить это видео на n кадров. Я использовал обычный метод opencv для извлечения кадров из видео. как показано ниже,
import cv2
vidcap = cv2.VideoCapture('3.mp4')
success,image = vidcap.read()
count = 0
while success:
cv2.imwrite("frame%d.jpg" % count, image) # save frame as JPEG file
success,image = vidcap.read()
print('Read a new frame: ', success)
count += 1
Он извлекает изображение как обычное изображение, а не тепловое изображение.
Я обнаружил это, используя приведенный ниже код.
import flirimageextractor
from matplotlib import cm
from glob import glob
flir = flirimageextractor.FlirImageExtractor(palettes=[cm.jet, cm.bwr, cm.gist_ncar])
for file_ in glob("images/*.jpg"):
flir.process_image(file_)
flir.save_images()
flir.plot()
it throws KeyError: 'RawThermalImageType'
Полная трассировка стека
Отслеживание (последний вызов последним): файл «Thermal_camera.py», строка 8, в flir.process_image (file_) Файл «/usr/local/lib/python3.5/dist-packages/flirimageextractor/flirimageextractor.py», строка 101, в process_image if self.get_image_type (). Upper (). Strip () == "TIFF": File "/usr/local/lib/python3.5/dist-packages/flirimageextractor/flirimageextractor.py", строка 133 , в get_image_type вернуть json.loads (meta_json.decode ()) [0] ["RawThermalImageType"] KeyError: 'RawThermalImageType'
Но приведенный выше код хорошо подходит для образцов тепловых изображений. Это означает, что я не извлекаю кадр из видео как правильный кадр.
Как извлечь кадр из видео FLIR без потери тепловой (необработанной) информации?