调整亮度和对比度OpenCV C ++

问题描述

我正在尝试调整RGB图像的亮度和对比度,但是输出不是我期望的。

函数从createTrackbar()函数回调,其值从0到100。

请检查下图。我将不胜感激。谢谢。

enter image description here

void brightness_callback(int brightness,void *userdata)
{
  int height = image_input.rows,width = image_input.cols;
  image_output = Mat::zeros(image_input.size(),image_input.type());

  int widthStep = image_input.step;
  int nChannels = 3;

  uchar *pDataInput = (uchar *)image_input.data;
  uchar *pDataOutput = (uchar *)image_output.data;

  for (int x = 0; x < height; x++,pDataInput += widthStep,pDataOutput += widthStep) {
    uchar *pRowInput = pDataInput;
    uchar *pRowOutput = pDataOutput;
    for (int y = 0; y < width; y++,pRowInput += nChannels,pRowOutput += nChannels) {
      uchar B = pRowInput[0];
      uchar G = pRowInput[1];
      uchar R = pRowInput[2];

      pRowOutput[0] = truncate((uchar)(B + brightness));
            pRowOutput[1] = truncate((uchar)(G + brightness));
            pRowOutput[2] = truncate((uchar)(R + brightness));
    }
  }

    imshow(window_original,image_output);
}


uchar truncate(uchar value) {
  if (value < 0) return 0;
  else if (value > 255) return 255;

  return value;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)