相关疑难解决方法(0)

在OpenCV/Python中设置相机参数

我正在使用OpenCV(2.4)和Python(2.7.3)以及Thorlabs的USB摄像头(DC1545M).

我正在对视频流进行一些图像分析,我希望能够从我的视频流中更改一些摄像机参数.令人困惑的是,我能够改变一些相机属性而不是所有相机属性,我不确定我做错了什么.

这是代码,使用Python中的cv2绑定,我可以确认它运行:

import cv2


#capture from camera at location 0
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1280)
cap.set(4,1024)
cap.set(15, 0.1)

while True:
    ret, img = cap.read()
    cv2.imshow("input", img)
    #cv2.imshow("thresholded", imgray*thresh2)

    key = cv2.waitKey(10)
    if key == 27:
        break


cv2.destroyAllWindows() 
cv2.VideoCapture(0).release()
Run Code Online (Sandbox Code Playgroud)

作为参考,cap.set()命令中的第一个参数引用了相机属性的枚举,如下所示:

0. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
1. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
2. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video …
Run Code Online (Sandbox Code Playgroud)

python camera opencv python-2.7

77
推荐指数
5
解决办法
19万
查看次数

提高OpenCV中的摄像头捕获分辨率

在我的C/C++程序中,我使用OpenCV从我的网络摄像头捕获图像.相机(罗技快IM)可以在分辨率捕捉320×240,640×4801280×960.但是,由于一些奇怪的原因,OpenCV只给我分辨率为320x240的图像.使用带有其他分辨率值的cvSetCaptureProperty()更改分辨率的调用不起作用.如何使用我的网络摄像头以其他可能的分辨率捕获图像?

c webcam opencv resolutions image

51
推荐指数
6
解决办法
8万
查看次数

Linux上的OpenCV(通过python):设置帧宽/高?

我在Linux(ubuntu 12.04)上通过python使用openCV,我有一个logitech c920,我想从中获取图像.奶酪能够获得高分辨率的帧,但每当我尝试使用openCV时,我只能获得640x480的图像.我试过了:

import cv
cam = cv.CaptureFromCAM(-1)
cv.SetCaptureProperty(cam,cv.CV_CAP_PROP_FRAME_WIDTH,1920)
cv.SetCaptureProperty(cam,cv.CV_CAP_PROP_FRAME_WIDTH,1080)
Run Code Online (Sandbox Code Playgroud)

但是这会在最后两行的每一行之后产生"0"的输出,并且当我随后通过以下方式获取帧时:

image = cv.QueryFrame(cam)
Run Code Online (Sandbox Code Playgroud)

生成的图像仍为640x480.

我尝试通过(在python之外)安装看似相关的工具:

sudo apt-get install libv4l-dev v4l-utils qv4l2 v4l2ucp
Run Code Online (Sandbox Code Playgroud)

我确实可以通过以下方式操纵相机的设置(再次,在python之外)

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=1
v4l2-ctl --set-parm=30
Run Code Online (Sandbox Code Playgroud)

并观察:

v4l2-ctl -V
Run Code Online (Sandbox Code Playgroud)

确实表明某些事情发生了变化:

Format Video Capture:
    Width/Height   : 1920/1080
    Pixel Format   : 'H264'
    Field          : None
    Bytes per Line : 3840
    Size Image     : 4147200
    Colorspace     : sRGB
Run Code Online (Sandbox Code Playgroud)

但是当我弹出python shell时,上面的代码表现与以前完全相同(在尝试设置属性并获得640x480的图像时打印零).

能够提高捕获的分辨率对我来说非常重要,所以我非常感谢任何人都可以提供的任何指针.

python linux webcam opencv v4l2

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

opencv ×3

python ×2

webcam ×2

c ×1

camera ×1

image ×1

linux ×1

python-2.7 ×1

resolutions ×1

v4l2 ×1