gpt4 book ai didi

c++ - 在 OpenCV 中,设置曝光会导致我的网络摄像头软件无法自动调整曝光

转载 作者:太空狗 更新时间:2023-10-29 23:18:32 28 4
gpt4 key购买 nike

当我调用方法 cvSetCaptureProperty(capture, CV_CAP_PROP_EXPOSURE, 2); 时,它会设置相机的曝光。但是,当我运行我的 Dell Webcam Central 软件、Skype 或任何其他使用我的相机的软件时,曝光停留在我在 OpenCV 程序代码中设置的最后一次曝光,并且它不会像以前那样自动调整之前做过。

如何让我的网络摄像头程序(Dell Webcam Central 和 Skype)再次自动调整曝光?

代码如下:

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); //CV_CAP_ANY
if ( !capture )
{
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}

cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );

cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);

int width = (int)(cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH));
int height = (int)(cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));
IplImage* image = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);

IplImage* frame;
char c;
while ( true )
{
frame = cvQueryFrame( capture );
if ( !frame )
{
fprintf( stderr, "ERROR: frame is null...\n" );
getchar();
break;
}
cvShowImage( "mywindow", frame );
cvSetCaptureProperty(capture, CV_CAP_PROP_EXPOSURE, 2);
c = cvWaitKey(33);
if( (c & 255) == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "mywindow" );
return 0;
}

最佳答案

OpenCV 仅调用 v4l1_ioctl() 传递参数 V4L2_CID_EXPOSURE

您必须深入研究 V4L2 docs能够弄清楚这一点。

顺便问一下,您是否尝试过在销毁窗口后为 CV_CAP_PROP_EXPOSURE 传递值 0?这可能会成功。

关于c++ - 在 OpenCV 中,设置曝光会导致我的网络摄像头软件无法自动调整曝光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com