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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
Python中将字典转换为列表的方法
Sep 21 Python
一篇文章快速了解Python的GIL
Jan 12 Python
python3中property使用方法详解
Apr 23 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Python配置文件处理的方法教程
Aug 29 Python
Python流程控制 if else实现解析
Sep 02 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
基于Python爬取股票数据过程详解
Oct 21 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
linux 下selenium chrome使用详解
2020/04/02 Python
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
群众路线剖析材料
2014/02/02 职场文书
设计师个人求职信范文
2014/02/02 职场文书
《月迹》教学反思
2014/02/19 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
倡议书的格式写法
2015/04/28 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书