OpenCV之怀旧图片

本文介绍了使用OpenCV进行图像处理的几个步骤,包括模糊处理(Mat_blur和GaussianBlur)、锐化处理(滤波2D),降低颜色饱和度(HSV转换),以及像素偏移和增加黄色效果的实现。
摘要由CSDN通过智能技术生成

原始图片

图片模糊

    Mat _blur;
    cv::GaussianBlur(src,_blur,Size(3,3),0);

 

图片锐化

    Mat _sharp;
    Mat kernal = Mat::zeros(3,3,CV_32FC1);
    kernal.at<float>(0,1) = -1;
    kernal.at<float>(1,0) = -1;
    kernal.at<float>(1,1) = 5;
    kernal.at<float>(1,2) = -1;
    kernal.at<float>(2,1) = -1;

    cv::filter2D(_blur,_sharp,-1,kernal);

 

 

降低颜色饱和度

    Mat _hsv,_sat;
    cvtColor(_sharp,_hsv,cv::COLOR_BGR2HSV);
    imwrite("d:/hsv.bmp",_hsv);
    for (int h = 0;h < _hsv.rows;h ++)
    {
        uchar *data = _hsv.ptr<uchar>(h);
        for (int w = 0;w < _hsv.cols;w ++)
        {
            int w3 = 3*w;
            data[w3 + 1] = 0.7 * data[w3 + 1];
        }
    }
    cvtColor(_hsv,_sat,cv::COLOR_HSV2BGR);

 

像素偏移

    int off = 3;
    Mat _trans = _sat.clone();
    for (int h = 0;h < _sat.rows ;h ++)
    {
        for (int w = 0;w < _sat.cols;w ++)
        {
            int nh = h + off;
            int nw = w + off;
            if (nh >= 0 && nh < _sat.rows &&
                nw >= 0 && nw < _sat.cols )
            {
                _trans.at<Vec3b>(h,w)[0] =  _sat.at<Vec3b>(h,w)[0];
                _trans.at<Vec3b>(h,w)[1] =  _sat.at<Vec3b>(h,w)[1];
                _trans.at<Vec3b>(h,w)[2] =  _sat.at<Vec3b>(nh,nw)[2];
            }
        }
    }

 

增加黄色

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视图猿人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值