Mat src,dst, m;
int lightness = 0;
static void on_track(int, void*)
{
m = Scalar(lightness, lightness, lightness);
add(src, m, dst);
// subtract(src, m, dst);
imshow("亮度调整", dst);
}
void ColorInvert::tracking(Mat& image)
{
namedWindow("亮度调整", WINDOW_AUTOSIZE);
dst = Mat::zeros(image.size(), image.type());
m = Mat::zeros(image.size(), image.type());
src = image;
int max_value = 100;
createTrackbar("Value Bar:", "亮度调整", &lightness, max_value, on_track);
on_track(50, 0);
}
eg2:
static void on_constrast(int b, void * userdata)
{
Mat image = *((Mat*)userdata);
Mat dst = Mat::zeros(image.size(), image.type());
Mat m = Mat::zeros(image.size(), image.type());
double constrast = b / 100.0;
addWeighted(image, constrast, m, 0.0, 0, dst);
imshow("亮度与对比度调整", dst);
}
void ColorInvert::tracking_bar(Mat& image)
{
namedWindow("亮度与对比度调整", WINDOW_AUTOSIZE);
int lightness = 50;
int max_value = 100;
int contrast_value = 100;
createTrackbar("Value Bar:", "亮度与对比度调整", &lightness, max_value, on_lightness,(void*)(&image));
createTrackbar("Value Bar:", "亮度与对比度调整", &contrast_value, 200, on_constrast, (void*)(&image));
on_lightness(50, &image);
}