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中对list去重的多种方法
Sep 18 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
Python爬虫代理IP池实现方法
Jan 05 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python高并发和多线程有什么关系
Nov 14 Python
python3实现Dijkstra算法最短路径的实现
May 12 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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
第十五节--Zend引擎的发展
2006/11/16 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
js前端导出Excel的方法
2017/11/01 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
Python 序列的方法总结
2016/10/18 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
会计实习生工作总结的自我评价
2013/10/07 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
中国入世承诺
2014/04/01 职场文书
药品业务员岗位职责
2014/04/17 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS