我想知道OpenCV是否有使用C++调整视频/帧的亮度和对比度的功能。您可以将BGR色彩空间转换为HSV色彩空间,并舍弃后者的分量V(亮度),以使算法对视频中的光照条件不太敏感,但是我该怎么做?
我当时在考虑使用cvAddS(frame,cvScalar(-50,-50,-50),frame)之类的东西来降低亮度,cvAddS和cvScalar对于C来说效果很好,但是对于C++,我该如何使用AddS和我程序中的标量,但不适用于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;
}
}
最佳答案
cv::Mat frame2 = frame + cv::Scalar(-50, -50, -50);
您可能还想使用histogram equalization调整对比度。将您的RGB图像转换为HSV并将
cv::equalizeHist()
应用于V通道。关于c++ - 调整亮度,OpenCV和c++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14248170/