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发送邮件示例(支持中文邮件标题)
Feb 16 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
基于python进行桶排序与基数排序的总结
May 29 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
利用python实现逐步回归
Feb 24 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php按单词截取字符串的方法
2015/04/07 PHP
详解js异步文件加载器
2016/01/24 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
JSON.stringify 语法实例讲解
2012/03/14 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python中的多重装饰器
2015/04/11 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
Python网络编程 Python套接字编程
2017/09/13 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
Java程序员面试90题
2013/10/19 面试题
2014全国两会心得体会
2014/03/17 职场文书
委托公证书范本
2014/04/03 职场文书
升职演讲稿范文
2014/05/23 职场文书
2014年工程工作总结
2014/11/25 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
党支部综合考察意见
2015/06/01 职场文书
爱国主义电影观后感
2015/06/18 职场文书
小学班主任教育随笔
2015/08/15 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python