First time here? Check out the FAQ!

Ask Your Question
0

What are the default webcam settings?

asked Mar 28 '14

Alexandru Onea gravatar image

I am trying to write a simple C program to get a frame from the webcam. Before that I used opencv. When using opencv the image from the webcam was just right. My program gets an image from the webcam but the webcam settings seem to be wrong (brightness, saturation, hue, contrast, etc.) I tried to play around and to adjust them but no result. I was wondering internally, how does opencv set these parameters?

Preview: (hide)

1 answer

Sort by » oldest newest most voted
3

answered Mar 29 '14

Haris gravatar image

updated Apr 1 '14

You could use VideoCapture::get() to get camera property. Also don’t use out-dated C instead use new C++ interface.

See below C++ code, which will access default camera parameters, and also you can change it using track-bar. I have tested it with Logitech webcam and works fine.

float Brightness;
float Contrast ;
float Saturation;
float Gain;

int B;
int C;
int S;
int G;

char winName[20]="Live";
Mat frame;
VideoCapture cap(0);

void onTrackbar_changed(int, void*)
{
 Brightness =float(B)/100;
 Contrast   =float(C)/100;
 Saturation =float(S)/100;
 Gain       =float(G)/100;

cap.set(CV_CAP_PROP_BRIGHTNESS,Brightness);
cap.set(CV_CAP_PROP_CONTRAST, Contrast);
cap.set(CV_CAP_PROP_SATURATION, Saturation);
cap.set(CV_CAP_PROP_GAIN, Gain);

}

int main(int, char**)
{

    if(!cap.isOpened())  // check if we succeeded
        return -1;

    cout<<"Press 's' to save snapshot"<<endl;
 namedWindow(winName);

 Brightness = cap.get(CV_CAP_PROP_BRIGHTNESS);
 Contrast   = cap.get(CV_CAP_PROP_CONTRAST );
 Saturation = cap.get(CV_CAP_PROP_SATURATION);
 Gain       = cap.get(CV_CAP_PROP_GAIN);

 cout<<"===================================="<<endl<<endl;
 cout<<"Default Brightness -------> "<<Brightness<<endl;
 cout<<"Default Contrast----------> "<<Contrast<<endl;
 cout<<"Default Saturation--------> "<<Saturation<<endl;
 cout<<"Default Gain--------------> "<<Gain<<endl<<endl;
 cout<<"===================================="<<endl;

  B=int(Brightness*100);
  C=int(Contrast*100);
  S=int(Saturation*100);
  G=int(Gain*100);

createTrackbar( "Brightness",winName, &B, 100, onTrackbar_changed );
createTrackbar( "Contrast",winName, &C, 100,onTrackbar_changed );
createTrackbar( "Saturation",winName, &S, 100,onTrackbar_changed);
createTrackbar( "Gain",winName, &G, 100,onTrackbar_changed);

    int i=0;
    char name[10];
    for(;;)
    {

        cap >> frame; // get a new frame from camera
        imshow(winName, frame);
        char c=waitKey(30);

        if(c=='s') {
     sprintf(name,"%d.jpg",i++);
     imwrite(name,frame);
    }
        if( c== 27) break;
    }
return 0;

}

image description

Preview: (hide)

Question Tools

Stats

Asked: Mar 28 '14

Seen: 16,673 times

Last updated: Mar 31 '14