首页 > 编程 > Python > 正文

Python实现PS滤镜中马赛克效果示例

2020-01-04 16:10:54
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现PS滤镜中马赛克效果。分享给大家供大家参考,具体如下:

这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如下:

from skimage import img_as_floatimport matplotlib.pyplot as pltfrom skimage import ioimport randomimport numpy as npfile_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.shapehalf_patch =10for 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 : 利用邻域的任意一点代替当前邻域所有像素点%%%% mosaicclc;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);  endendimshow(Image_out/255);

原图

Python,PS,滤镜,马赛克

效果图

Python,PS,滤镜,马赛克

 

希望本文所述对大家Python程序设计有所帮助。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表