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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Python 求向量的余弦值操作
Mar 04 Python
python控制台打印log输出重复的解决方法
May 14 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函数学习之PHP函数点评
2012/07/05 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python中的枚举类型示例介绍
2019/01/09 Python
pandas的排序和排名的具体使用
2019/07/31 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python之字典添加元素的几种方法
2020/09/30 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
公司道歉信范文
2014/01/09 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
毕业自我评价
2014/02/05 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
2015年项目工作总结
2015/04/29 职场文书
小学生暑假安全公约
2015/07/14 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
Python合并pdf文件的工具
2021/07/01 Python
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript