一、马赛克效果

马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内随机选取的一个像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。

以下OpenCV程序实现马赛克效果,通过鼠标左键在图像上划定马赛克的矩形框。

#include

#include

using namespace cv;

Mat imageSourceCopy; //原始图像

Mat imageSource; //原始图像拷贝

int neightbourHood = 9; //马赛克上每个方框的像素大小

RNG rng;

int randomNum; //邻域内随机值

Point ptL; //左键按下时坐标

Point ptR; //右键按下时坐标

//鼠标回掉函数

void onMouse(int event, int x, int y, int flag, void *ustg);

int main()

{

imageSourceCopy = imread("Test.jpg");

imageSource = imageSourceCopy.clone();

//imshow("马赛克", imageSourceCopy);

namedWindow("马赛克");

setMouseCallback("马赛克", onMouse);

waitKey();

}

void onMouse(int event, int x, int y, int flag, void *ustg)

{

if (event == CV_EVENT_LBUTTONDOWN)

{

ptL = Point(x, y);

}

if (event == CV_EVENT_LBUTTONUP)

{

//对鼠标画出的矩形框超出图像范围做处理,否则会越界崩溃

x > imageSource.cols - 2 * neightbourHood ? x = imageSource.cols - 2 * neightbourHood : x = x;

y > imageSource.rows - 2 * neightbourHood ? y = imageSource.rows - 2 * neightbourHood : y = y;

//对鼠标从右下往右上画矩形框的情况做处理

ptR = Point(x, y);

Point pt = ptR;

ptR.x < ptL.x ? ptR = ptL, ptL = pt : ptR = ptR;

for (int i = 0; i < ptR.y - ptL.y; i += neightbourHood)

{

for (int j = 0; j < ptR.x - ptL.x; j += neightbourHood)

{

randomNum = rng.uniform(-neightbourHood / 2, neightbourHood / 2);

Rect rect = Rect(j + neightbourHood + ptL.x, i + neightbourHood + ptL.y, neightbourHood, neightbourHood);

Mat roi = imageSourceCopy(rect);

Scalar sca = Scalar(

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[0],

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[1],

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[2]);

Mat roiCopy = Mat(rect.size(), CV_8UC3, sca);

roiCopy.copyTo(roi);

}

}

}

imshow("马赛克", imageSourceCopy);

waitKey();

}

可以通过改变程序中neightbourHood参数的大小调整小矩形快的大小,实现效果:

二、毛玻璃效果

毛玻璃效果的实现通过用像素点邻域内随机一个像素点的颜色替代当前像素点的颜色实现。

#include

#include

using namespace cv;

int main()

{

Mat imageSource = imread("Test.jpg");

Mat imageResult = imageSource.clone();

RNG rng;

int randomNum;

int Number = 5;

for (int i = 0; i < imageSource.rows - Number; i++)

for (int j = 0; j < imageSource.cols - Number; j++)

{

randomNum = rng.uniform(0, Number);

imageResult.at(i, j)[0] = imageSource.at(i + randomNum, j + randomNum)[0];

imageResult.at(i, j)[1] = imageSource.at(i + randomNum, j + randomNum)[1];

imageResult.at(i, j)[2] = imageSource.at(i + randomNum, j + randomNum)[2];

}

imshow("毛玻璃效果", imageResult);

waitKey();

}

实现效果:

opencv 去除玻璃蒙版_OpenCV实现马赛克和毛玻璃滤镜效果相关推荐

  1. opencv 去除玻璃蒙版_在opencv python中混合渐变蒙版

    我想,也许你想这样的事情. 这是源图像: 的源所迷离-对: 的掩模alphablened-对: 在代码注释中带有描述的代码. #!/usr/bin/python3 # 2018.01.16 13:07 ...

  2. opencv 滤镜效果php,OpenCV实现马赛克和毛玻璃滤镜效果

    本文为大家分享了OpenCV实现马赛克和毛玻璃滤镜的具体代码,供大家参考,具体内容如下 一.马赛克效果 马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内随机选取的一个像素点的颜色代替 ...

  3. OpenCV总结:实现马赛克和毛玻璃滤镜效果

    一.马赛克效果 马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内随机选取的一个像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓. 先来张倪美人的镇楼照: 以下OpenCV程 ...

  4. Python OpenCV去除图片水印

    问题描述 去除百度水印 1.jpg,背景简单 2.jpg,背景复杂 解决方案 安装 pip install opencv-python pip install numpy 方法一.OpenCV提取颜色 ...

  5. 使用opencv去除水印

    使用opencv去除pdf水印 实现去除pdf水印 思路 所使用的工具和库 核心代码 实现去除pdf水印 pdf水印在每一页的大小位置相同 水印颜色与正常字体颜色稍微浅些 思路 pdf转图片 制作水印 ...

  6. opencv去除图片的高光

    opencv去除图片的高光 有明显的修补痕迹 https://blog.csdn.net/qq_43555843/article/details/102510425 参考这个: https://blo ...

  7. 用openCV去除文字中乱入的线条

    用openCV去除文字中乱入的线条 原文:http://blog.csdn.net/sinat_28309919/article/details/73604109 目录(?)[+] 今天上午,朋友发来 ...

  8. opencv去除照片红眼

    opencv去除照片红眼 #include <stdint.h> #include <opencv2/opencv.hpp> #include "windows.h& ...

  9. python去除图像光照不均匀_python+opencv——去除图像光照不均匀

    使用python版本的opencv去除图像中的光照不均匀 在图像处理中,如果图像中存在光照不均匀,则会影响图像处理的效果,比如在图像文本识别和图像分割中.本博客对于图像均衡化的处理主要参考文章:一种基 ...

最新文章

  1. asp .net mvc ajax 传值到后台,并放回JSon值解析
  2. 配置EXCHANGE服务器
  3. 在VS2010中创建自定义的代码段
  4. strip lstrip rstrip
  5. CGI,BOA配置心得
  6. java入门预备知识一
  7. HDU 1874 畅通工程续 最短路
  8. 如何在 Mac 上管理用于锁定备忘录的密码?
  9. Asp.net core WebApi 使用Swagger生成帮助页实例
  10. 图像压缩算法动态规划c语言,动态规划算法实现数字图像压缩的研究.pdf
  11. Unity--初识Live2D Cubism以及通过代码来实现Live2D模型的基本功能(一)
  12. Win11查看本机WiFi密码
  13. 服务器上qq邮件不能打开方式,QQ邮箱打不开是怎么回事?从QQ面板上打不开QQ邮箱怎么解决?...
  14. 实验11:20220319 1+X 中级实操考试(id:3097)
  15. LibreOJ - 10066 新的开始
  16. mysql frm的意思_mysqlfrm
  17. 党团学系统前后端接口文档
  18. 【Linux系统】第10节 linux系统文件及目录权限详解
  19. 爬虫 | 王者荣耀高清壁纸-多线程
  20. 计算机系统构成及硬件基础知识(中级软件评测师备考笔记)

热门文章

  1. dpkg 命令使用说明
  2. 永恒之柱2显示服务器,永恒之柱2游戏黑屏是什么原因怎么解决_画面显示不全解决方法教程攻略...
  3. 武汉涉密系统集成资质保密制度涵盖哪些内容
  4. 超越传统软件开发技术
  5. 服务器中了挖矿病毒的检测及删除方法(如dhpcd,kdevtmpfs等)
  6. 【嵌入式】树莓派3b+人像识别摄像头安装和使用
  7. 阿蒙:不如回家养猪?
  8. 第五代计算机名称,所谓的“第五代计算机”是指( ?)。
  9. 大学宿舍管理系统 C语言实现
  10. 为什么Java单元测试不支持控制台输入