OpenCV函数之saturate_cast,确保数值在[0,255]之间。效果图如下:
源码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat src = cv::imread("美少女.jpg", 0);
cv::Mat dst(src.size(), src.type());
src.copyTo(dst);
for (int i = 0; i < src.rows; i++)
{
for (int j = 0; j < src.cols; j++)
{
// 单通道图像
if (src.channels() == 1)
{
dst.at<uchar>(i, j) = cv::saturate_cast<uchar>(src.at<uchar>(i, j) * 1.8);
}
// 三通道图像
else
{
dst.at<cv::Vec3b>(i, j)[0] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i, j)[0] * 1.8);
dst.at<cv::Vec3b>(i, j)[1] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i, j)[1] * 1.8);
dst.at<cv::Vec3b>(i, j)[2] = cv::saturate_cast<uchar>(src.at<cv::Vec3b>(i, j)[2] * 1.8);
}
}
}
cv::imshow("原始图", src);
cv::imshow("结果图", dst);
cv::waitKey();
return 0;
}