微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建轨迹栏以更改图像OpenCV的亮度

如何解决创建轨迹栏以更改图像OpenCV的亮度

我在创建可调整所显示图片亮度的跟踪栏时遇到问题。

这是我的代码(与亮度有关的部分):

int brightness_value = 25; //global values
const int max_value = 255;
int main()
{
Mat brightimage;
    srcImage.copyTo(brightimage);
    namedWindow("Bright Image");
    moveWindow("Bright Image",300,600);
    createTrackbar("Brightness","Bright Image",&brightness_value,max_value);

    for (int i = 0; i < brightimage.rows; i++)
    {
        for (int j = 0; j < brightimage.cols; j++)
        {
            Vec3b pixelColor;
            pixelColor = brightimage.at<Vec3b>(Point(j,i));

            for (int k = 0; k < 3; k++) //vector with 3 byte entries
            {
                if (pixelColor[k] + getTrackbarPos("Brightness","Bright Image") > 255)
                    pixelColor[k] = 255;
                else
                    pixelColor[k] += getTrackbarPos("Brightness","Bright Image");
                brightimage.at<Vec3b>(Point(j,i)) = pixelColor;
            }
        }
    }
    imshow("Bright Image",brightimage);

waitKey(0);
return 0;
}

这样,在程序启动时,图像的亮度仅调整一次。但是,当我想使用轨迹栏进行更改时,什么也没有发生。问题出在哪里,我该怎么做,以便每次移动轨迹栏时亮度都会改变? 感谢您的帮助:)

这就是结果:(在左侧原始图像上,在右侧亮度已更改)

result

解决方法

"@material-ui/core": "^5.0.0-alpha.14","@material-ui/lab": "^5.0.0-alpha.14","@material-ui/pickers": "^4.0.0-alpha.12",带有指向回调函数的指针,该函数在更改轨迹栏的位置时被调用。在此回调中,您应使用更改的亮度级别重新绘制图像,并按createTrackbar刷新窗口。这样的回调使用指向imshow数据的指针-它使您能够传递重画图像时要使用的任何数据,在这种情况下,它应该是指向输出图像的指针(并且可能是指向源图像的指针-您应该总是向原始图像添加新的亮度级别,而不是修改一个):

void

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。