我正在尝试使用OpenCV从网络摄像头中抓取帧。我也试过“奶酪”。这两个都给了我一个非常奇怪的画面:扭曲,错误的颜色。使用mplayer,我能够找到正确的编解码器"yuy2“。即使是mplayer有时也会选择错误的编解码器("yuv"),这使得它看起来就像是使用OpenCV /奶酪来捕获图像。
我能以某种方式告诉OpenCV使用哪个编解码器吗?
谢谢!
发布于 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使用得有点宽松!
发布于 2019-07-14 20:17:07
OpenCV会自动选择第一个可用的捕获后端(see here)。这可能是因为它没有自动使用V4L2。
如果从源代码构建,还要同时设置-D WITH_V4L=ON
和-D WITH_LIBV4L=ON
。
要设置要使用的像素格式,请设置捕获的CAP_PROP_FOURCC
属性:
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)
https://stackoverflow.com/questions/13567104
复制相似问题