python图片马赛克_利用Python对图片进行马赛克处理
背景
最近项目需要用人脸检测技术把视频里面的人脸检测出来后,进行马赛克处理,人脸检测这一块就是大家熟知的利用深度学习技术来解决,之前有相关文章介绍Python 人脸检测方法总结,这篇文章主要介绍马赛克处理过程。
马赛克原理
图片是由一个三维数组,打马赛克就是把特定区域的值替换为其他值,项目在做的过程中经过一次升级,最开始用的是高斯马赛克,后来应客户的要求,升级为和其他软件手工打的马赛克一样的样式正规马赛克
高斯马赛克
特定区域值替换为高斯分布数值,可以利用numpy中的np.random.normal(size=(h,w))来生成一些随机的数值,然后进行替换即可
正规马赛克
马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内左上像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。就是用左上角的那个值,来替换右下方一个小方块的值,逐步进行替换即可。
代码
高斯马赛克
import cv2
import numpy as np
face_location=[430,500,730,870] #x1,y1,x2,y2 x1,y1为人脸左上角点;x2,y2为人脸右下角点
img=cv2.imread('./tongliya.jpg') #opencv读取的是BGR数组
##高斯马赛克
def normal_mosaic(img, x1, y1, x2, y2):
img[y1:y2, x1:x2, 0] = np.random.normal(size=(y2-y1, x2-x1))
img[y1:y2, x1:x2, 1] = np.random.normal(size=(y2-y1, x2-x1))
img[y1:y2, x1:x2, 2] = np.random.normal(size=(y2-y1, x2-x1))
return img
x1=face_location[0]
y1=face_location[1]
x2=face_location[2]
y2=face_location[3]
img_mosaic=normal_mosaic(img, x1, y1, x2, y2)
cv2.imwrite('img_mosaic_normal.jpg',img_mosaic)
正规马赛克
import cv2
import numpy as np
face_location=[430,500,730,870] #x1,y1,x2,y2 x1,y1为人脸左上角点;x2,y2为人脸右下角点
img=cv2.imread('./tongliya.jpg') #opencv读取的是BGR数组
#正规马赛克
def do_mosaic(img, x, y, w, h, neighbor=9):
"""
:param rgb_img
:param int x : 马赛克左顶点
:param int y: 马赛克左顶点
:param int w: 马赛克宽
:param int h: 马赛克高
:param int neighbor: 马赛克每一块的宽
"""
for i in range(0, h , neighbor):
for j in range(0, w , neighbor):
rect = [j + x, i + y]
color = img[i + y][j + x].tolist() # 关键点1 tolist
left_up = (rect[0], rect[1])
x2=rect[0] + neighbor - 1 # 关键点2 减去一个像素
y2=rect[1] + neighbor - 1
if x2>x+w:
x2=x+w
if y2>y+h:
y2=y+h
right_down = (x2,y2)
cv2.rectangle(img, left_up, right_down, color, -1) #替换为为一个颜值值
return img
x=face_location[0]
y=face_location[1]
w=face_location[2]-face_location[0]
h=face_location[3]-face_location[1]
img_mosaic=do_mosaic(img, x, y, w, h, neighbor=15)
cv2.imwrite('img_mosaic.jpg',img_mosaic)
效果
原图
高斯马斯克
正规马赛克
历史相关文章
以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号DataShare,不定期分享干货
python图片马赛克_利用Python对图片进行马赛克处理相关推荐
- python制作图片墙_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- python批量生成图片_利用Python批量生成任意尺寸的图片
实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...
- python将excel转换成图片格式_利用python将图片转换成excel文档格式
前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...
- python照片墙地图_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- python图色检测_利用python打开摄像头及颜色检测方法
最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了....,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,-下面我就汇报下今天的学习成果吧 小 ...
- python 词云_利用Python生成词云
利用Python生成词云 一.第三方库的安装与介绍 1.1 Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...
- python爬虫背景_利用Python代码实现一键抠背景功能
前言 又是一个逛csdn发现的一个有趣的小项目,可以一键抠背景,需要用到removebg模块及其API,API可从其官网免费获取,网址如下https://www.remove.bg/zh ps:加上/ ...
- python代码物理_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...
- python pdf报告_利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas
转自:https://foofish.net/python-crawler-html2pdf.html 工具准备 弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了.requests.beau ...
最新文章
- python批量pdf转word,python批量实现Word文件转换为PDF文件
- 【个人成长学习讨论小组】练习2:角色
- /etc/fstab自动挂载文件详解
- 20145203 《信息安全系统设计基础》第十三周学习总结
- Android开发之ApiCloud模块开发步骤
- Linux文件、目录权限及常用命令
- win32_bios 的对象编辑器无法保存对象_怎样创建Femap对象
- AJAX with JSP and Servlet(代码)
- Day46:数据库引擎、索引、pymysql
- 凝结11年技术实力 弹性计算国内首著发布
- iOS 防键盘遮挡
- 为什么员工辞职时,领导都要象征性挽留一下?
- LogBack 日志压缩产生上百G的tmp文件问题
- 人与自然超越彩虹-下
- uni-app学习:CSS之flex布局居中
- CC2530 + RFX2401C Zigbee模块
- MFC CList使用
- 电子招投标系统EBD
- 【Android】Android开源项目分类汇总
- 关于maven更新超时问题显示报错
热门文章
- ps时间轴制作渐隐动态签名
- 1075c语言程序设计答案,山东理工大学ACM平台题答案关于C语言 1075 Doubles
- 【生活中的逻辑谬误】稻草人谬误和无力反驳不算证明
- Linux 性能调试 之 drop_caches
- iPhone4s(iOS 6.1.3 越狱) 登录微信(6.2.0.19)
- Egret引擎的常用倒计时
- 计算机网卡实现的功能,网卡实现的主要功能是什么
- matlab中断概率仿真,使用Matlab进行误比特率仿真
- 架构师之路(二)-概念架构
- phpstudy编写php扩展,PHP_探讨:如何编写PHP扩展,用C/C++扩展PHP的优缺点:优点 - phpStudy...