Python实现PS滤镜中马赛克效果示例


Posted in Python onJanuary 20, 2018

本文实例讲述了Python实现PS滤镜中马赛克效果。分享给大家供大家参考,具体如下:

这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如下:

from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import random
import numpy as np
file_name='D:/Visual Effects/PS Algorithm/4.jpg';
img=io.imread(file_name)
img = img_as_float(img)
img_out = img.copy()
row, col, channel = img.shape
half_patch =10
for i in range(half_patch, row-1-half_patch, half_patch):
  for j in range (half_patch, col-1-half_patch, half_patch):
    k1 = random.random() - 0.5
    k2 = random.random() - 0.5
    m=np.floor(k1*(half_patch*2 + 1))
    n=np.floor(k2*(half_patch*2 + 1))
    h=int((i+m) % row)
    w=int((j+n) % col)
    img_out[i-half_patch:i+half_patch, j-half_patch:j+half_patch, :] =\
            img[h, w, :]
plt.figure(1)
plt.imshow(img)
plt.axis('off')
plt.figure(2)
plt.imshow(img_out)
plt.axis('off')
plt.show()

附:PS 滤镜算法原理 ——马赛克

% method : 利用邻域的任意一点代替当前邻域所有像素点
%%%% mosaic
clc;
clear all;
addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');
Image=imread('4.jpg');
Image=double(Image);
size_info=size(Image);
height=size_info(1);
width=size_info(2);
N=11;  % 控制邻域大小
Image_out=Image;
for i=1+N:N:height-N
  for j=1+N:N:width-N
    k1=rand()-0.5;
    k2=rand()-0.5;
    m=(k1*(N*2-1));
    n=(k2*(N*2-1));
    h=floor(mod(i+m,height));
    w=floor(mod(j+n,width));
    if w==0;
      w=width;
    end
    if h==0
      h=height;
    end
   Image_out(i-N:i+N,j-N:j+N,1)=Image(h,w,1);
   Image_out(i-N:i+N,j-N:j+N,2)=Image(h,w,2);
   Image_out(i-N:i+N,j-N:j+N,3)=Image(h,w,3);
  end
end
imshow(Image_out/255);

原图

Python实现PS滤镜中马赛克效果示例

效果图

Python实现PS滤镜中马赛克效果示例

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

Python 相关文章推荐
Python中super关键字用法实例分析
May 28 Python
python生成器表达式和列表解析
Mar 10 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
简单了解python代码优化小技巧
Jul 08 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
Python time库的时间时钟处理
May 02 Python
浅析python协程相关概念
Jan 20 #Python
Python实现可自定义大小的截屏功能
Jan 20 #Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 #Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 #Python
Python搭建FTP服务器的方法示例
Jan 19 #Python
python re模块findall()函数实例解析
Jan 19 #Python
Python enumerate索引迭代代码解析
Jan 19 #Python
You might like
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
13个PHP函数超实用
2015/10/21 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
layui表格内容溢出的解决方法
2019/09/06 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
德国足球商店:OUTFITTER
2019/05/06 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
服务质量承诺书
2014/03/27 职场文书
教研处工作方案
2014/05/26 职场文书
公司2014年度工作总结
2014/12/10 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
Python中字符串对象语法分享
2022/02/24 Python
PHP RabbitMQ消息列队
2022/05/11 PHP