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 相关文章推荐
详解Django中的过滤器
Jul 16 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
python中的for循环
Sep 28 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 Python
Python中SQLite如何使用
May 27 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
详解pandas赋值失败问题解决
Nov 29 Python
python 模拟登陆163邮箱
Dec 15 Python
python在协程中增加任务实例操作
Feb 28 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实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
深入分析PHP设计模式
2020/06/15 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
详解Python Socket网络编程
2016/01/05 Python
浅析python继承与多重继承
2018/09/13 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
init进程的作用
2012/04/12 面试题
总经理司机职责
2014/02/02 职场文书
护士毕业实习感言
2014/03/05 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
公益广告标语
2014/06/19 职场文书
见习报告格式范文
2014/11/08 职场文书
政审证明范文
2015/06/19 职场文书