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使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python中的类学习笔记
Sep 23 Python
python 数据的清理行为实例详解
Jul 12 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
python实现简单的文字识别
Nov 27 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python调用.net动态库实现过程解析
Jun 05 Python
python如何输出反斜杠
Jun 18 Python
Python实现打包成库供别的模块调用
Jul 13 Python
一文详述 Python 中的 property 语法
Sep 01 Python
python tqdm库的使用
Nov 30 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 clearstatcache()函数详解
2010/03/02 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
Jquery 扩展方法
2010/05/06 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
Python正则表达式使用经典实例
2016/06/21 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python实现分页效果
2017/10/25 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
值得收藏的10道python 面试题
2019/04/15 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python中eval与int的区别浅析
2019/08/11 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
大学校园生活自我鉴定
2014/01/13 职场文书
篝火晚会策划方案
2014/05/16 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
Go并发4种方法简明讲解
2022/04/06 Golang
Linux磁盘管理方法介绍
2022/06/01 Servers