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在Windows8下获取本机ip地址的方法
Mar 14 Python
轻松实现python搭建微信公众平台
Feb 16 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python json模块dumps、loads操作示例
Sep 06 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
Python configparser模块操作代码实例
Jun 08 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python基础之tkinter图形化界面学习
Apr 29 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开发中常用的8个小技巧
2008/08/27 PHP
php常见的魔术方法详解
2014/12/25 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
js清空form表单中的内容示例
2014/05/20 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
wxPython实现列表增删改查功能
2019/11/19 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
《春笋》教学反思
2014/04/15 职场文书
借款协议书范本
2014/04/22 职场文书
机关作风建设整改方案
2014/10/27 职场文书
工程项目合作意向书
2015/05/08 职场文书
《落花生》教学反思
2016/02/16 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
分享Python获取本机IP地址的几种方法
2022/03/17 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android