首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV + Linux +不支持的摄像头=错误的像素格式

OpenCV + Linux +不支持的摄像头=错误的像素格式
EN

Stack Overflow用户
提问于 2012-11-26 22:41:37
回答 2查看 1.8K关注 0票数 0

我正在尝试使用OpenCV从网络摄像头中抓取帧。我也试过“奶酪”。这两个都给了我一个非常奇怪的画面:扭曲,错误的颜色。使用mplayer,我能够找到正确的编解码器"yuy2“。即使是mplayer有时也会选择错误的编解码器("yuv"),这使得它看起来就像是使用OpenCV /奶酪来捕获图像。

我能以某种方式告诉OpenCV使用哪个编解码器吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-26 23:37:53

在最新版本的opencv中,您可以使用与视频相同的fourcc样式代码来设置相机的捕获格式。请参阅http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture

它可能仍然需要一些试错,像YUV,YUYV,YUY2这样的术语被相机制造商,驱动程序制造商,操作系统,directshow层和opencv使用得有点宽松!

票数 0
EN

Stack Overflow用户

发布于 2019-07-14 20:17:07

OpenCV会自动选择第一个可用的捕获后端(see here)。这可能是因为它没有自动使用V4L2。

如果从源代码构建,还要同时设置-D WITH_V4L=ON-D WITH_LIBV4L=ON

要设置要使用的像素格式,请设置捕获的CAP_PROP_FOURCC属性:

代码语言:javascript
运行
复制
  capture = cv2.VideoCapture(self.cam_id, cv2.CAP_V4L2)
  scapture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
  width = 1920
  height = 1080
  capture.set(cv2.CAP_PROP_FRAME_WIDTH, width)
  capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13567104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档