【问题标题】:Issue Capturing image from FLIR Boson with openCV on a Jetson TX2在 Jetson TX2 上使用 openCV 从 FLIR Boson 捕获图像的问题
【发布时间】:2019-06-22 04:09:18
【问题描述】:

当我尝试在 Jetson TX2 上使用 OpenCV 打开网络摄像头 (FLIR Boson) 时,出现以下错误:

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 上。我对所有这些都是新手,如果我要求更多说明,请原谅我。

最后一点信息,这是来自与 USB 相关的 FLIR Boson 手册:

8.2.2 USB Boson 能够以 USB 视频类 (UVC) 兼容设备的形式提供数字数据。提供了两个输出选项。请注意,这些选项不是通过 CCI 选择的,而是通过用户选择的视频捕获或查看软件选择的。选项有:

■ Pre-AGC(16 位):输出与阵列中每个像素的入射通量成线性比例; 320 配置的输出分辨率为 320x256,640 配置的输出分辨率为 640x512。请注意,AGC 设置、缩放设置和颜色编码设置对该分接点的输出信号没有影响。此选项使用“Y16”(16 位未压缩灰度图像)的 UVC 视频格式 4CC 代码标识

■ 后着色,YCbCrb:使用指定的调色板将输出转换为 YCbCr 颜色空间(参见第 6.7 节)。 320 和 640 配置的分辨率均为 640x512。提供了三个选项,通过 UVC 视频格式 4CC 代码识别:

• I420:8 位 Y 平面后跟 8 位 2x2 二次采样 U 和 V 平面

• NV12:8 位 Y 平面,后跟具有 2x2 子采样的交错 U/V 平面

• NV21:与 NV12 相同,只是 U 和 V 平面的顺序相反

我已经尝试过多次重新安装所有内容,尽管重新刷新 TX2 并重新安装 open CV 和 Tensorflow 需要几个小时。我尝试了两种不同的opencv“构建”。我曾尝试用奶酪查看网络摄像头,但从未遇到过问题。

【问题讨论】:

    标签: python-3.x opencv webcam-capture nvidia-jetson flir


    【解决方案1】:

    我能够找到一种方法让它工作,使用下面的代码工作。似乎是开放式 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

    【讨论】:

      【解决方案2】:

      我不使用 Python,但您需要禁用转换为 RGB:

      cap.set(cv.CAP_PROP_CONVERT_RGB, 0)
      

      v4l example from OpenCV

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-17
        • 2020-11-17
        • 1970-01-01
        • 2012-07-03
        • 2018-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多