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中浮点型的基本内容
Feb 11 Python
python里 super类的工作原理详解
Jun 19 Python
树莓派实现移动拍照
Jun 22 Python
Python数学形态学实例分析
Sep 06 Python
python实现网站微信登录的示例代码
Sep 18 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
Python实现UDP程序通信过程图解
May 15 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
python 批量压缩图片的脚本
Jun 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
Python+django实现简单的文件上传
2016/08/17 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python和opencv实现抠图
2018/07/18 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
基于python实现操作git过程代码解析
2020/07/27 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
旷课检讨书2000字
2014/01/14 职场文书
秋季运动会稿件
2014/01/30 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
土建施工员岗位职责
2015/04/11 职场文书
产品调价通知函
2015/04/20 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
python异步的ASGI与Fast Api实现
2021/07/16 Python
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js