使用OpenCV和C ++更改图像上特定位置的HSV

时间:2013-01-25 12:56:59

标签: c++ opencv hsv

我是OpenCV的新手,我正在使用它来改变图像的亮度。 在我的图像中,https://docs.google.com/file/d/0B9LaMgEERnMxQUNKbndBODJ5TXM/edit,在它的一部分中有一个很大的空间反映了氛围的光芒。起初,我可以改变图像上的所有光度。现在,我正在尝试减少这个空间,这意味着在图像的特定位置,使用HSV的V,这里是代码:     在这里输入代码

    Mat newImg;
cvtColor(img, newImg, CV_BGR2HSV);

imwrite("C:/Users/amanda.brito/Desktop/test.jpg", newImg);

vector<Mat> hsv_planes; 
split(newImg, hsv_planes); //geting the color plans of image
int param = -70; // the value that I'm seting for V
    for (int y = 0; y < newImg.rows; y++) {
    for (int x = 0; x < newImg.cols; x++) {

        Vec3b pixel = hsv_planes[2].at<Vec3b>(y, x);
        pixel[0] = 0;
        pixel[1] = 0;
        pixel[2] = param;

        hsv_planes[2].at<Vec3b>(y, x) = pixel;

    }
}

    merge(hsv_planes, newImg);
Mat imagem;
cvtColor(newImg, imagem, CV_HSV2BGR);

imwrite("C:/Users/amanda.brito/Desktop/final.jpg", imagem);

好吧,有了这个或什么都没发生,或者编译器停止了程序。 我已经到处寻找但没有运气。我做错了什么?

从现在开始,感谢您的帮助。

0 个答案:

没有答案