使用OpenCV 2.4模拟Gimp的色调调整滑块

使用OpenCV 2.4模拟Gimp的色调调整滑块,opencv,Opencv,我试图模仿在GIMP中看到的效果,它使用OpenCV调整图像的色调。Gimp选项的详细信息可以在以下链接中看到:,在“调整选定滑块”标题下: 色调:滑块和输入框允许您在颜色圈-180、180中选择色调 滑块默认为0,其中图像显示不做任何更改,并且+180的更改与我查看的图像的-180的更改相同,并且可能是所有更改。所以我假设Gimp会调整每个像素的色调值,调整量为360 我一直试图在OpenCV中重现这种效果,但运气不太好。这是我的密码: Mat img = imread("lena.jpg",

我试图模仿在GIMP中看到的效果,它使用OpenCV调整图像的色调。Gimp选项的详细信息可以在以下链接中看到:,在“调整选定滑块”标题下:

色调:滑块和输入框允许您在颜色圈-180、180中选择色调

滑块默认为0,其中图像显示不做任何更改,并且+180的更改与我查看的图像的-180的更改相同,并且可能是所有更改。所以我假设Gimp会调整每个像素的色调值,调整量为360

我一直试图在OpenCV中重现这种效果,但运气不太好。这是我的密码:

Mat img = imread("lena.jpg", CV_LOAD_IMAGE_COLOR);
Mat imgHSV;
cvtColor(img, imgHSV, CV_BGR2HSV);

for (int i = 0; i < imgHSV.rows; i++) {
    for (int j = 0; j < imgHSV.cols; j++) {
        imgHSV.at<Vec3b>(i, j)[0] = ((imgHSV.at<Vec3b>(i, j)[0] + 180) % 360;
    }
}

cvtColor(imgHSV, img, CV_HSV2BGR);

namedWindow("Hue Test", CV_WINDOW_AUTOSIZE);
imshow("Hue Test", img);
同样值得注意的是,我尝试了以下方法并得到了相同的结果:

imgHSV.at<Vec3b>(i, j)[0] += 180;    
您可以在此处看到结果:

您可以从GIMP中看到所需的结果:

如果您能帮我解决问题,我们将不胜感激。谢谢大家!

In。当像素的深度为CV_8U时,如您的情况,色调值为H