2013-01-09 1 views
2

OpenCV에서 C++을 사용하여 비디오/프레임의 밝기와 대비를 조정하는 기능이 있는지 알고 싶습니다. BGR 색상 공간을 HSV 색상 공간으로 변환하고 비디오의 조명 조건에 덜 민감한 알고리즘을 만들기 위해 후자의 구성 요소 인 V (루미넌스)를 삭제할 수 있지만 어떻게 할 수 있습니까?밝기, OpenCV 및 C++ 조정

나는 밝기, cvAddS 및 cvScalar 작업의도 C에 대한하지만 어떻게 내가 할 수있는 C에 대한 ++을 감소 (-50), 프레임, 프레임, cvScalar (-50, -50) cvAddS 같은 것을 사용하여 생각하고 있었는데, 내 프로그램에 추가하고 스칼라를 사용하지만, C++

int main() { 
    VideoCapture video(1); 
    if(!video.isOpened()) { 
     cerr<<"No video input"<<endl; return -1; 
    } 
    namedWindow("Video",CV_WINDOW_AUTOSIZE); 

    for(;;) { 
     Mat frame; 
     video >> frame; if(!frame.data) break; 
     Mat frame2; 
     //I USE AddS AND Scalar TO DECREASE THE BRIGHTNESS 
     AddS(frame,Scalar(-50,-50,-50),frame2); 
     //BUT DON'T WORK WITH C++ 
     imshow("Video",frame2); 

     int c=waitKey(20); 

     if(c >= 0)break; 
    } 
} 

답변

3

밝기 및 대비는 일반적으로 픽셀 값의 선형 변환을 사용하여 보정됩니다. 밝기는 첨가제 시프트에 해당하고 명암은 곱셈 요소에 해당합니다.

일반적으로 픽셀 값이 v 인 경우 수정 후 새로운 값은 v'=a*v + b이됩니다.

+0

이 정보는 자습서에 간략하게 작성되어 있지 않습니다. 감사합니다. – kiltek