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

C++ 使用OpenCV和C+更改图像中特定位置的HSV的V+;,c++,opencv,hsv,C++,Opencv,Hsv,我是OpenCV的新手,我用它来改变图像的亮度。 在我的图像中,这里:,有一个很大的空间,它的一部分反射着环境的光。首先,我可以改变图像上的所有亮度。现在,我试图缩小这个空间,这意味着在图像的特定位置,使用HSV的V,下面是代码: 在这里输入代码 Mat newImg; cvtColor(img, newImg, CV_BGR2HSV); imwrite("C:/Users/amanda.brito/Desktop/test.jpg", newImg); vector<Mat&

我是OpenCV的新手,我用它来改变图像的亮度。 在我的图像中,这里:,有一个很大的空间,它的一部分反射着环境的光。首先,我可以改变图像上的所有亮度。现在,我试图缩小这个空间,这意味着在图像的特定位置,使用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);
matnewimg;
CVT颜色(img、newImg、CV_BGR2HSV);
imwrite(“C:/Users/amanda.brito/Desktop/test.jpg”,newImg);
矢量hsv_平面;
拆分(新IMG、hsv_飞机)//图像色彩平面的获取
int参数=-70;//我为V设置的值
对于(int y=0;y
好的,有了这个,或者什么都没有发生,或者编译器停止程序。 我已经到处找了,但运气不好。我做错了什么


从现在起,感谢您的帮助。

您的代码在我的电脑中运行良好。是正常运行还是您没有得到预期的结果?您好,Haris,这里的代码不正常运行,在执行过程中出现一些错误,应用程序关闭。改变一些部分,它被编译了,但是图像保持不变。试试这个代码,你的hsv图像看起来像这样,最终结果看起来像这样。你能给我看一下处理后的图像吗?这是你的hsv图像和最终结果的结果