Python实现PS图像抽象画风效果的方法


Posted in Python onJanuary 23, 2018

本文实例讲述了Python实现PS图像抽象画风效果的方法。分享给大家供大家参考,具体如下:

今天介绍一种基于图像分割和color map 随机采样生成一种抽象画风的图像特效,简单来说,就是先生成一张 color map 图,颜色是渐变的,然后针对要处理的图像,进行分割,这里用的是 SLIC 分割算法,然后从 color map 中随机采样,将采样得到的像素值赋予分割后的图像区域。

# -*- coding: utf-8 -*-
"""
Created on Sun Aug 20 08:31:04 2017
@author: shiyi
"""
import numpy as np
import matplotlib.pyplot as plt
from skimage import io
from skimage.segmentation import slic
import numpy.matlib
import random
file_name='D:/Visual Effects/PS Algorithm/9.jpg';
img=io.imread(file_name)
row, col, channel = img.shape
# define the colormap
color_map = img.copy()
rNW = 0.5
rNE = 1.0
rSW = 0.0
rSE = 0.5
gNW = 0.0
gNE = 0.5
gSW = 0.0
gSE = 1.0
bNW = 1.0
bNE = 0.0
bSW = 0.5
bSE = 0.0
xx = np.arange (col)
yy = np.arange (row)
x_mask = numpy.matlib.repmat (xx, row, 1)
y_mask = numpy.matlib.repmat (yy, col, 1)
y_mask = np.transpose(y_mask)
fx = x_mask * 1.0 / col
fy = y_mask * 1.0 / row
p = rNW + (rNE - rNW) * fx
q = rSW + (rSE - rSW) * fx
r = ( p + (q - p) * fy )
r[r<0] = 0
r[r>1] =1
p = gNW + (gNE - gNW) * fx
q = gSW + (gSE - gSW) * fx
g = ( p + (q - p) * fy )
g[g<0] = 0
g[g>1] =1
p = bNW + (bNE - bNW) * fx
q = bSW + (bSE - bSW) * fx
b = ( p + (q - p) * fy )
b[b<0] = 0.0
b[b>1] = 1.0
color_map[:, :, 0] = r * 255
color_map[:, :, 1] = g * 255
color_map[:, :, 2] = b * 255
# segment the image
N_block = 100
segments = slic(img, n_segments=N_block, compactness=10)
# plt.imshow(segments, plt.cm.gray)
seg_img = img.copy()
T_mask = img.copy()
for i in range(N_block):
 mask = (segments == i)
 T_mask[:, :, 0] = mask
 T_mask[:, :, 1] = mask
 T_mask[:, :, 2] = mask
 x_ind = int(random.random() * (col-1))
 y_ind = int(random.random() * (row-1))
 color = color_map[y_ind, x_ind, :]
 T_img = seg_img * T_mask
 T_img = color
 seg_img = seg_img * (1-T_mask) + T_img * T_mask
plt.figure(2)
plt.imshow(seg_img)
plt.show()

原图:

Python实现PS图像抽象画风效果的方法

效果图:

Python实现PS图像抽象画风效果的方法

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

Python 相关文章推荐
Python设计模式之观察者模式实例
Apr 26 Python
python处理文本文件并生成指定格式的文件
Jul 31 Python
python字典键值对的添加和遍历方法
Sep 11 Python
python实现教务管理系统
Mar 12 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python flask中动态URL规则详解
Nov 22 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
浅析python标准库中的glob
Mar 13 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
matplotlib作图添加表格实例代码
Jan 23 #Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 #Python
Django实现组合搜索的方法示例
Jan 23 #Python
50行Python代码实现人脸检测功能
Jan 23 #Python
Python基于OpenCV实现视频的人脸检测
Jan 23 #Python
Python求出0~100以内的所有素数
Jan 23 #Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 #Python
You might like
php查询ip所在地的方法
2014/12/05 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
python 除法保留两位小数点的方法
2018/07/16 Python
python学习开发mock接口
2019/04/28 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
助人为乐道德模范事迹材料
2014/08/16 职场文书
英语教师求职信范文
2015/03/20 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书