我使用战士分支(poky 战士、meta-tegra Warriors-l4t-r32.2、openembedded Warriors)和 CUDA 10 在 Jetson Nano 上使用 Yocto/poky 创建了一个最小的 xfce 图像。
图像启动并完美运行,相机测试:
$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=3820, height=2464, framerate=21/1, format=NV12' ! nvvidconv flip-method=0 ! 'video/x-raw,width=960, height=616' ! nvvidconv ! nvegltransform ! nveglglessink -e
奇迹般有效。
现在我想在相机源上使用 OpenCV,但我无法让它工作。
我已将这些软件包添加到IMAGE_INSTALL
:
...
opencv \
libopencv-core \
libopencv-imgproc \
opencv-samples \
gstreamer1.0-omx-tegra \
python3 \
python3-modules \
python3-dev \
python-numpy \
...
安装 OpenCV。当我运行 /usr/bin/opencv_version 时,它返回版本 3.4.5,python 版本是 3.7.2,GCC 版本是 7.2.1。
当我尝试运行此 OpenCV 测试代码时,它会返回
[ WARN:0] VIDEOIO(createGStreamerCapture(filename)): trying ...
(python3.7:5163): GStreamer-CRITICAL **: ..._: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
[ WARN:0] VIDEOIO(createGStreamerCapture(filename)): result=(nil) isOpened=-1 ...
Unable to open camera
我试过在网上四处寻找解决方案,但它们似乎不起作用。
编辑:在 VideoCapture 函数中使用 CAP_GSTREAMER 似乎确实存在问题,因为使用 CAP_FFMPEG 运行相同的程序而不是在 mp4 视频上运行良好。
仅使用cv2.VideoCapture("/dev/video0", CAP_FFMPEG)
isOpen=-1 返回。如何让相机在 python 中打开?