本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

opencv滤镜-怀旧滤镜

怀旧滤镜

通过对rgb三个颜色分量的调整可以将照片处理成一种老照片的怀旧风格。调整的公式如下

怀旧滤镜公式.png

原图

代码实现

// vintage-filter.cpp : 怀旧滤镜
// @mango

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



int main()
{

    cv::Mat img = cv::imread("fruit.jpg");

    for (size_t i = 0; i < img.rows; i++)
    {
        for (size_t j = 0; j < img.cols; j++)
        {
            
            img.at<cv::Vec3b>(i, j)[1] = cv::saturate_cast<uchar>(0.349*img.at<cv::Vec3b>(i, j)[2] + 0.686*img.at<cv::Vec3b>(i, j)[1] + 0.168*img.at<cv::Vec3b>(i, j)[0]);// green
            img.at<cv::Vec3b>(i, j)[2] = cv::saturate_cast<uchar>(0.393*img.at<cv::Vec3b>(i, j)[2] + 0.769*img.at<cv::Vec3b>(i, j)[1] + 0.189*img.at<cv::Vec3b>(i, j)[0]);// red
                        img.at<cv::Vec3b>(i, j)[0] = cv::saturate_cast<uchar>(0.272*img.at<cv::Vec3b>(i, j)[2] + 0.534*img.at<cv::Vec3b>(i, j)[1] + 0.131*img.at<cv::Vec3b>(i, j)[0]);// blue
        }
    }
    cv::imshow("怀旧滤镜", img);

    cv::waitKey(0);
    return 0;
}

运行代码效果

怀旧滤镜效果.png


本文由芒果浩明发布,转载请注明来源。
本文链接:https://mangoroom.cn/opencv/vintage-filter.html


 继续浏览关于 opencv图像处理图像处理算法滤镜怀旧 的文章

 本文最后更新于:2019/08/07 22:07:18,可能因经年累月而与现状有所差异

 引用转载请注明:芒果的博客 > opencv,滤镜 > opencv滤镜-怀旧滤镜

精选评论

  1. Chaos
    Chaos 回复

    Windows 10Chrome 86.0.4240.198

    你这每个色值的公式里3个小数加起来都是大于1的。而且你光把b移到最下面也不对啊,g和r都更新了

  2. 天外天
    天外天 回复

    Windows 10Chrome 70.0.3538.110

    这个代码改第一个Blue时后面的公式里面的blue就全部是用新的Blue运算的啊

    1. 芒果
    2. 芒果

      !!!对的,我写错了。得把顺序调一下