Windows OpenCV/视频捕获/添加摄像头,调试现有摄像头的参数

Windows OpenCV/视频捕获/添加摄像头,调试现有摄像头的参数,windows,opencv,ubuntu,camera,drivers,Windows,Opencv,Ubuntu,Camera,Drivers,我想使用OpenCV/VideoCapture类为各种相机(IEEE 1394,罗技网络摄像头)设置曝光/增益参数。关于这个主题的大多数帖子都表明这是一种尝试和错误 难道没有一种方法可以更有条不紊地进行吗 搜索videocapture.cpp不会显示opencv-3.0-beta中的代码。没有专门用于videocapture类的头文件;它必须隐藏在其他头文件中 如何进一步了解videocapture(Ubuntu和/或Windows)的工作原理?它是如何与O/S中的驱动程序通信的?查看modul

我想使用OpenCV/VideoCapture类为各种相机(IEEE 1394,罗技网络摄像头)设置曝光/增益参数。关于这个主题的大多数帖子都表明这是一种尝试和错误

难道没有一种方法可以更有条不紊地进行吗

搜索videocapture.cpp不会显示opencv-3.0-beta中的代码。没有专门用于videocapture类的头文件;它必须隐藏在其他头文件中


如何进一步了解videocapture(Ubuntu和/或Windows)的工作原理?它是如何与O/S中的驱动程序通信的?

查看modules/videoio/src/cap.cpp中的
cvCreateCameraCapture()
的源代码,了解为什么很难预测功能。根据您的系统,可以使用多种摄像头API:

// try every possibly installed camera API
    for (int i = 0; domains[i] >= 0; i++)
    {
#if defined(HAVE_MSMF)         || \
    defined(HAVE_TYZX)         || \
    defined(HAVE_VFW)          || \
    defined(HAVE_LIBV4L)       || \
    defined(HAVE_CAMV4L)       || \
    defined(HAVE_CAMV4L2)      || \
    defined(HAVE_VIDEOIO)      || \
    defined(HAVE_GSTREAMER)    || \
    defined(HAVE_DC1394_2)     || \
    defined(HAVE_DC1394)       || \
    defined(HAVE_CMU1394)      || \
    defined(HAVE_MIL)          || \
    defined(HAVE_QUICKTIME)    || \
    defined(HAVE_QTKIT)        || \
    defined(HAVE_UNICAP)       || \
    defined(HAVE_PVAPI)        || \
    defined(HAVE_OPENNI)       || \
    defined(HAVE_OPENNI2)      || \
    defined(HAVE_XIMEA)        || \
    defined(HAVE_AVFOUNDATION) || \
    defined(HAVE_ANDROID_NATIVE_CAMERA) || \
    defined(HAVE_GIGE_API) || \
    defined(HAVE_INTELPERC)    || \

在Windows中,它可能会使用VFW(
cvCreateCameraCapture\u VFW
)打开一个网络摄像头,从而导致
class-CvCaptureCAM\u VFW
,如果您想调试它使用VFW的
capCaptureSetSetup()
函数来设置参数。在Linux中,您可能必须尝试在系统上使用CMake来查看可以链接哪些API,但GStreamer和XIMEA等都受支持

Ok。。。看了一眼。我知道它通常是如何寻找其他驱动程序的。但是,它需要指向类似于
CvCaptureCAM\u VFW
(例如)。代码在哪里?似乎一般都在DLL中。有些人建议用直接为相机驱动程序编写的代码来抓取视频/静像,而不是加入OpenCV。思想?