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 开发Activex组件方法
Nov 08 Python
python比较2个xml内容的方法
May 11 Python
python简单分割文件的方法
Jul 30 Python
深入解析Python中的urllib2模块
Nov 13 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
Python快速从注释生成文档的方法
Dec 26 Python
Python计时相关操作详解【time,datetime】
May 26 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
python实现简单淘宝秒杀功能
May 03 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python GUI实现小球满屏乱跑效果
May 09 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 无法载入mysql扩展
2010/03/12 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
设定php简写功能的方法
2019/11/28 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
Python中除法使用的注意事项
2014/08/21 Python
python中map、any、all函数用法分析
2015/04/21 Python
Python中查看文件名和文件路径
2017/03/31 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python MD5加密的示例
2020/10/19 Python
十岁生日家长答谢词
2014/01/17 职场文书
商务考察邀请函范文
2014/01/21 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
运动会闭幕词
2015/01/28 职场文书
补充协议书
2015/01/28 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA