В OpenCV настройка экспозиции заставляет программное обеспечение моей веб-камеры не регулировать экспозицию автоматически

Когда я вызываю метод 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;
}

3

Решение

OpenCV просто вызывает v4l1_ioctl() передавая аргумент V4L2_CID_EXPOSURE,

Вам придется копаться в V4L2 документы чтобы иметь возможность понять это.

Кстати, вы пытались передать значение 0 за CV_CAP_PROP_EXPOSURE после того как ты разрушил окно? Это может помочь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]