如何解决创建轨迹栏以更改图像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;
}
这样,在程序启动时,图像的亮度仅调整一次。但是,当我想使用轨迹栏进行更改时,什么也没有发生。问题出在哪里,我该怎么做,以便每次移动轨迹栏时亮度都会改变? 感谢您的帮助:)
解决方法
"@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 举报,一经查实,本站将立刻删除。