调整图像亮度

#include <iostream>
#include <opencv2/opencv.hpp>

namespace zhjr {
namespace utils {
bool adjustBrigthness(const cv::Mat& input_image, cv::Mat& output_image,
                      const float& alpha = 1.5, const float& beta = 10) {
  output_image.create(input_image.size(), input_image.type());
  cv::Mat input_image_;
  input_image.convertTo(input_image_, CV_32F);

  for (size_t row = 0; row < input_image_.rows; row++) {
    for (size_t col = 0; col < input_image_.cols; col++) {
      if (input_image_.channels() == 3) {
        float b = input_image_.at<cv::Vec3f>(row, col)[0];
        float g = input_image_.at<cv::Vec3f>(row, col)[1];
        float r = input_image_.at<cv::Vec3f>(row, col)[2];

        output_image.at<cv::Vec3b>(row, col)[0] =
            cv::saturate_cast<uchar>(alpha * b + beta);
        output_image.at<cv::Vec3b>(row, col)[1] =
            cv::saturate_cast<uchar>(alpha * g + beta);
        output_image.at<cv::Vec3b>(row, col)[2] =
            cv::saturate_cast<uchar>(alpha * r + beta);
      } else if (input_image_.channels() == 1) {
        float v = input_image_.at<uchar>(row, col);
        output_image.at<uchar>(row, col) =
            cv::saturate_cast<uchar>(alpha * v + beta);
      }
    }
  }

  return true;
}
}  // namespace utils
}  // namespace zhjr

int main() {
  cv::Mat input_image = cv::imread("../data/lena.jpg");
  cv::Mat output_image;
  if (!zhjr::utils::adjustBrigthness(input_image, output_image, 1.5, 100)) {
    return EXIT_FAILURE;
  }
  cv::imshow("input_image", input_image);
  cv::imshow("output_image", output_image);
  cv::waitKey();
  cv::destroyAllWindows();

  return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值