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 测试实现方法
Dec 24 Python
python轻松实现代码编码格式转换
Mar 26 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
python中kmeans聚类实现代码
Feb 23 Python
取numpy数组的某几行某几列方法
Apr 03 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
python如何写try语句
Jul 14 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 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基于base64解码图片与加密图片还原实例
2014/11/03 PHP
linux下php上传文件注意事项
2016/06/11 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
angular.bind使用心得
2015/10/26 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python处理JSON数据并生成条形图
2016/08/05 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
python3图片文件批量重命名处理
2019/10/31 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python 解析简单的XML数据
2020/07/24 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
家具促销活动方案
2014/02/16 职场文书
股份合作协议书范本
2014/04/14 职场文书
绘画专业自荐信
2014/07/04 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
担保书范本
2015/01/20 职场文书
爱心捐款感谢信
2015/01/20 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers