python使用opencv实现马赛克效果示例


Posted in Python onSeptember 28, 2019

本文实例讲述了python使用opencv实现马赛克效果。分享给大家供大家参考,具体如下:

最近要实现opencv视频打马赛克,在网上找了一下基本是C++的实现,好在原理一样,下面给出python实现。

原理和注意点,我都写在注释里了

import cv2
##马赛克
def do_mosaic(frame, x, y, w, h, neighbor=9):
  """
  马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内左上像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。
  :param frame: opencv frame
  :param int x : 马赛克左顶点
  :param int y: 马赛克右顶点
  :param int w: 马赛克宽
  :param int h: 马赛克高
  :param int neighbor: 马赛克每一块的宽
  """
  fh, fw = frame.shape[0], frame.shape[1]
  if (y + h > fh) or (x + w > fw):
    return
  for i in range(0, h - neighbor, neighbor): # 关键点0 减去neightbour 防止溢出
    for j in range(0, w - neighbor, neighbor):
      rect = [j + x, i + y, neighbor, neighbor]
      color = frame[i + y][j + x].tolist() # 关键点1 tolist
      left_up = (rect[0], rect[1])
      right_down = (rect[0] + neighbor - 1, rect[1] + neighbor - 1) # 关键点2 减去一个像素
      cv2.rectangle(frame, left_up, right_down, color, -1)
im = cv2.imread('test.jpg', 1)
do_mosaic(im, 219, 61, 460 - 219, 412 - 61)

while 1:
  k = cv2.waitKey(10)
  if k == 27:
    break
  cv2.imshow('mosaic', im)

原图为:

python使用opencv实现马赛克效果示例

效果如下:

python使用opencv实现马赛克效果示例

图片来自网上,如有侵权,联系删除。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python备份文件以及mysql数据库的脚本代码
Jun 10 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
Python松散正则表达式用法分析
Apr 29 Python
Python中规范定义命名空间的一些建议
Jun 04 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python给图像添加噪声具体操作
Mar 03 Python
python实现小球弹跳效果
May 10 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
python字符串下标与切片及使用方法
Feb 13 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
python中温度单位转换的实例方法
Dec 27 Python
python打包成so文件过程解析
Sep 28 #Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 #Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 #Python
在vscode中配置python环境过程解析
Sep 28 #Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 #Python
python 单线程和异步协程工作方式解析
Sep 28 #Python
python爬虫 正则表达式解析
Sep 28 #Python
You might like
PHP中的类-什么叫类
2006/11/20 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
Vue异步加载about组件
2017/10/31 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python实现读取并保存文件的类
2017/05/11 Python
简单实现python进度条脚本
2017/12/18 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
采购部主管岗位职责
2014/01/01 职场文书
会计自我鉴定
2014/02/04 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
Java 多态分析
2022/04/26 Java/Android
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技