【发布时间】: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