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的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
python生成二维码的实例详解
Oct 29 Python
Python Flask-web表单使用详解
Nov 18 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
Django REST framework 视图和路由详解
Jul 19 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python怎么调用自己的函数
Jul 01 Python
Python存储读取HDF5文件代码解析
Nov 25 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 addslashes 函数详细分析说明
2009/06/23 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php数组遍历类与用法示例
2019/05/24 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
生日邀请函范文
2014/01/13 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
初中信息技术教学反思
2016/02/16 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android