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代码制作configure文件示例
Jul 28 Python
怎样使用Python脚本日志功能
Aug 14 Python
对Python中gensim库word2vec的使用详解
May 08 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
pygame实现简易飞机大战
Sep 11 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
Python列表切片操作实例总结
Feb 19 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Django的性能优化实现解析
Jul 30 Python
Pytorch之保存读取模型实例
Dec 30 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
如何在向量化NumPy数组上进行移动窗口
May 18 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文字转图片功能原理与实现方法分析
2017/08/31 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python与shell的3种交互方式介绍
2015/04/11 Python
Python中pygame安装方法图文详解
2015/11/11 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python处理document文档保留原样式
2019/09/23 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
建筑专业自我鉴定
2013/10/22 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
学生会辞职信
2015/03/02 职场文书
KTV员工管理制度
2015/08/06 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS