opencv - FFmpeg 将输出更改为特定的像素格式?
问题描述
我正在开发一个 openCV 项目,我有一个稳定运行的变体,它从 HDMI 采集卡获取输入并使用 FFmpeg 输出到 v4L2 环回设备 (/dev/video0) 我的 openCV 项目从 /dev/video0 获取输入.
当我尝试使用 rtsp 提要时出现问题,以下命令可以将提要发送到我的环回设备:
ffmpeg -rtsp_transport tcp -i rtsp://@192.168.1.27:552//stream1 -acodec rawvideo -vcodec rawvideo -f v4l2 /dev/video0
而且我可以使用 VLC(在 /dev/video0 上)查看该提要没问题,但是当我将它提供给我的 openCV 应用程序时,我收到以下错误:
VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
当我v4l2-ctl -d /dev/video0 --all
在工作和非工作变体上运行时,这就是我得到的:
工作输出
Format Video Output:
Width/Height : 1920/1080
Pixel Format : 'UYVY'
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Default
YCbCr Encoding : Default
Quantization : Default
Flags :
非功能性输出
Format Video Output:
Width/Height : 1280/720
Pixel Format : 'YU12'
Field : None
Bytes per Line : 1280
Size Image : 1382400
Colorspace : sRGB
Transfer Function : Default
YCbCr Encoding : Default
Quantization : Default
Flags :
所以我的结论是像素格式'YU12'与openCV不兼容,而格式'UYVY'是。如果可能,当输入为 YU12 时,如何将 FFmpeg 的输出设置为像素格式 UYVY?
解决方案
推荐阅读
- ios - 在 iOS 中共享 vcf 文件时,该文件未使用 swift 附加到邮件中
- migration - 将记录迁移到 Aerospike 上的另一组
- flutter - 无法更新文本颤振飞镖
- java - Jersey WS 中的媒体类型=应用程序/xml 问题
- python - 从共享邮箱在 python 中使用 smtplib 发送电子邮件
- php - Laravel 应用程序不使用相同的代码发送电子邮件
- python-3.x - 如何在python中使用线程队列进行处理
- python - 如何确保用户不会在 django 中保持登录状态?
- javascript - 如何在writeFile之前调整节点js中的图像大小
- node.js - Node EventEmitter 管理监听器池