Проблема Захват изображения с FLIR Boson с openCV на Jetson TX2 - PullRequest
0 голосов
/ 29 января 2019

Когда я пытаюсь открыть веб-камеру (FLIR Boson) с OpenCV на Jetson TX2, выдается следующая ошибка:

libv4l2: error set_fmt gave us a different result then try_fmt!
VIDEOIO ERROR: libv4l unable convert to requested pixfmt

Я использую этот скрипт Python:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here

    # Display the resulting frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Хотя он отображает видео, он показывает эти ошибки.Причиной этого является то, что я пытаюсь заставить FLIR Boson работать с Jetson TX2, на котором запущена эта программа https://github.com/naisy/realtime_object_detection

У меня она работает с обычной веб-камерой, но с FLIR Boson она дает

libv4l2: error set_fmt gave us a different result then try_fmt!
VIDEOIO ERROR: libv4l unable convert to requested pixfmt
VIDEOIO ERROR: V4L: Initial Capture Error: Unable to load initial memory buffers.
Segmentation fault (core dumped)

вышеуказанная ошибка и закрывается.В моем исследовании этой ошибки, кажется, придумали люди, которые используют веб-камеры, которые являются монохромными, глядя на этот https://www.flir.com/support-center/oem/is-there-a-way-to-maximize-the-video-display-on-the-boson-app-for-windows-pc-to-full-screen/ Мне интересно, нужно ли мне настраивать OpenCV или драйвер V4L2, чтобы выбрать правильный формат длявеб-камера для предотвращения ошибок.

У меня также есть Jetson Xavier, и на нем работает та же самая программа обнаружения объектов (она просто имеет разную сборку OpenCV и Tensorflow), поэтому я предполагаю, что есть немного другаяконфигурация, связанная с совместимостью формата веб-камеры на этой установке OpenCV на Xavier VS TX2.Я новичок во всем этом, так что простите меня, если я попрошу дать дополнительные разъяснения.

Последний бит информации, это не относится к блокам FLIR, относящимся к USB:

8.2.2USB Boson способен предоставлять цифровые данные как устройство, совместимое с USB Video Class (UVC).Предусмотрены два варианта вывода.Обратите внимание, что параметры выбираются не через CCI, а с помощью программного обеспечения для захвата видео или просмотра, выбранного пользователем.Возможны следующие варианты:

■ Pre-AGC (16-бит): выходной сигнал линейно пропорционален падающему потоку на каждый пиксель в массиве;выходное разрешение составляет 320x256 для конфигурации 320, 640x512 для конфигурации 640.Обратите внимание, что настройки AGC, настройки масштабирования и настройки цветовой кодировки не влияют на выходной сигнал в этой точке касания.Эта опция идентифицируется с помощью кода видео формата UVC 4CC «Y16» (16-битное несжатое изображение в оттенках серого)

■ Post-Colorize, YCbCrb: выходной сигнал преобразуется в цветовое пространство YCbCr с использованием указанной цветовой палитры (см. раздел 6.7).Разрешение составляет 640x512 для конфигураций 320 и 640.Предусмотрено три варианта, идентифицируемых через код видео CCCC в формате UVC:

• I420: 8-битная плоскость Y, за которой следуют 8-битные 2x2 субсэмплированные U и V-плоскости

• NV12: 8-битный Yплоскость, за которой следует чередующаяся плоскость U / V с подвыборкой 2x2

• NV21: то же, что NV12, за исключением обратного порядка плоскостей U и V

Я пытался переустановить все несколько раз, хотя это занимаетнесколько часов, чтобы перепрошить TX2 и переустановить открытые CV и Tensorflow.Я пробовал две разные "сборки" opencv.Я пытался просмотреть веб-камеру с сыром, и у меня никогда не было проблем.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Мне удалось найти способ заставить его работать, используя приведенный ниже код.Казалось, проблема с открытым CV, взаимодействующим с v4l2.

pipeline = "v4l2src device=/dev/video1 ! video/x-raw,width=640,height=512,format=(string)I420,pixel-aspect-ratio=1/1, interlace-mode=(string)progressive, framerate=30/1 ! videoconvert ! appsink"
cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)

https://github.com/FLIR/BosonUSB/issues/13

0 голосов
/ 29 января 2019

Я не работаю с Python, но вам нужно отключить преобразование в RGB:

cap.set(cv.CAP_PROP_CONVERT_RGB, 0)

Увидимся v4l пример из OpenCV .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...