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将数组的元素导出到变量中(unpacking)
Oct 27 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python实现批量修改文件名代码
Sep 10 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
使用python实现kNN分类算法
Oct 16 Python
Python list与NumPy array 区分详解
Nov 06 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
python第三方库学习笔记
Feb 07 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
PyQt5实现简单的计算器
May 30 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 Python
python 如何对logging日志封装
Dec 02 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
PHP实现的策略模式示例
2019/03/20 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
setTimeout学习小结
2017/02/08 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
《黄河颂》教学反思
2014/02/07 职场文书
如何写辞职书
2015/02/26 职场文书
高考1977观后感
2015/06/04 职场文书
小学体育教学随笔
2015/08/14 职场文书