opencv进阶 ——(二)图像处理之毛玻璃效果

32 篇文章 1 订阅

一、通过用像素点邻域内随机一个像素点的颜色替代当前像素点的颜色实现

实现代码:

cv::Mat frostedGlass(const cv::Mat& img, int n)
{
    cv::Mat destImg(img.size(), img.type());
    cv::RNG rng;
    int randomNum;

    for (int i = 0; i < destImg.rows; i++)
    {
        for (int j = 0; j < destImg.cols; j++)
        {
            randomNum = rng.uniform(0, n);
            int row = i + randomNum > destImg.rows ? destImg.rows - randomNum : i + randomNum;
            int col = j + randomNum > destImg.cols ? destImg.cols - randomNum : j + randomNum;
            destImg.at<cv::Vec3b>(i, j)[0] = img.at<cv::Vec3b>(row, col)[0];
            destImg.at<cv::Vec3b>(i, j)[1] = img.at<cv::Vec3b>(row, col)[1];
            destImg.at<cv::Vec3b>(i, j)[2] = img.at<cv::Vec3b>(row, col)[2];
        }
    }
    return destImg;
}

效果:

二、通过高斯模糊后,与原图对比生成噪音点叠加实现

三、使用boxFilter将噪音点拉长,从而产生横纹或竖纹效果

四、将高斯模糊后的图像减去噪音点图像,然后对应原图的相应图像相见,参数叠加效果

五、直接用高斯模糊叠加噪音点实现

六、将图像打乱,然后随机抽取部分点,替换到高斯模糊后的图像中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值