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

opencv滤镜-连环画滤镜

连环画滤镜

连环画滤镜的公式为:

连环画滤镜公式.png

原图

代码实现

// comic-filter.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// @mango

#include<iostream>
#include<cmath>
#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++)
        {
            int r = img.at<cv::Vec3b>(i, j)[2];
            int g = img.at<cv::Vec3b>(i, j)[1];
            int b = img.at<cv::Vec3b>(i, j)[0];

            double R = std::abs(g - b + g + r) * r / 256;
            double G = std::abs(b - g + b + r) * r / 256;
            double B = std::abs(b - g + b + r) * g / 256;

            img.at<cv::Vec3b>(i, j)[0] = cv::saturate_cast<uchar>(B);
            img.at<cv::Vec3b>(i, j)[1] = cv::saturate_cast<uchar>(G);
            img.at<cv::Vec3b>(i, j)[2] = cv::saturate_cast<uchar>(R);
        }
    }
    cv::imshow("连环画滤镜", img);

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

滤镜效果

连环画滤镜效果.png


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


 继续浏览关于 opencv图像处理图像处理算法滤镜连环画 的文章

 本文最后更新于:2019/07/03 12:00:06,可能因经年累月而与现状有所差异

 引用转载请注明:芒果的博客 > opencv,滤镜 > opencv滤镜-连环画滤镜

精选评论

  1. aya
    aya 回复

    Mac OS X 10_15_4Chrome 81.0.4044.138

    作者你好,感谢你的文章。我按照你的文章实验了一遍,发现图片出来的效果和文章结尾的图片的效果差别有点大。请问可能是图片放错了吗?

    PS. 这个系列的其他文章,我实验都能得到一样的效果

    1. 芒果

      我这边再次测了一下,显示效果和上图结果一样呢?你那边效果是程什么样子的,我测试环境windows+opencv430。文章结果应该是windows+opencv410

      1. aya
        aya 回复

        Mac OS X 10_15_4Chrome 83.0.4103.97

        感谢站长~ 认真抄写了一遍代码 结果与你在文章后边给的图片一致了 是我之前粗心了 icon_mrgreen.gif