isp图像处理(4)tone

1 产生一个curve曲线,控制各部分图像亮度
这里是以像素最大为8bit为例子,当小于128则除以2,大于128则乘以2,到时候大家可以多写几个判断条件,以达到curve的形式

  // 加载图像
    cv::Mat image = cv::imread("path_to_your_image.jpg");

    // 创建一个查找表
    cv::Mat lut(1, 256, CV_8U);
    uchar* p = lut.ptr();
    for (int i = 0; i < 256; ++i)
    {
        if (i < 128)
            p[i] = cv::saturate_cast<uchar>(i / 2);
        else
            p[i] = cv::saturate_cast<uchar>(i * 2);
    }

    // 使用查找表来改变图像的亮度
    cv::Mat new_image;
    cv::LUT(image, lut, new_image);

    // 显示原图像和新图像
    cv::imshow("Original Image", image);
    cv::imshow("New Image", new_image);
   imwrite("E:/test/result/tone.jpg", new_image);`在这里插入代码片`
    // 等待用户按键
    cv::waitKey();
    

2,cv::LUT(image, lut, new_image);用法

cv::LUT函数在OpenCV中用于应用查找表(Look-Up Table,LUT)到图像。查找表是一个映射,它将输入像素值映射到输出像素值。cv::LUT函数接受一个输入图像和一个查找表,然后返回一个新的图像,新图像的像素值是通过查找表从输入图像的像素值得到的。

以下是cv::LUT函数的基本用法:

cv::Mat image = cv::imread("path_to_your_image.jpg"); // 加载图像

cv::Mat lut(1, 256, CV_8U); // 创建查找表
for (int i = 0; i < 256; ++i)
    lut.at<uchar>(i) = 255 - i; // 这个查找表将像素值反转,使得暗的变亮,亮的变暗

cv::Mat new_image;
cv::LUT(image, lut, new_image); // 应用查找表到图像
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值