图像的数组表示:

PIL库,Python Image Library  (mac命令行下载该第三方库的命令:pip3 install pillow , 如果没用,可以在该命令后面加--user)

from PIL import Image (图像类)

图像用ndarray的三维数组表示: 高度、宽度、RBG值

图像变换:

例1:将图像变为补色保存:

通过修改每个像素的rgb的值,将每个像素的颜色改为对应的补色。

原图:

修改后的图片:

例2:照片灰度变换

convert函数:下面代码convert('L') 将原图片改为一个灰度值的图片,则生成的图片数组并非三维数组,而变成二维数组,其中每一个元素并不对应一个rgb值,而是对应灰度值。(convert详解可参考:https://blog.csdn.net/icamera0/article/details/50843172)

输入的图片:

输出的图片则变成了老照片一样的黑白画面:

例三:输出浅灰度值的图片

由例二的输出可以看出,当前的灰度值太高,接近于黑,可以适当调整参数降低灰度值。将当前元素的灰度值进行区间压缩,再扩充区间范围,使灰度的透明度变低。

输出的图片如下:明显灰度减少了很多。

同理,如果需要灰度继续加深,可以扩大c的值(比如平方)。

总结:这三变换都只改变了中间那一行图像数组的值,通过改变数组的元素值,可以实现所有的图像色彩变换。


手绘效果的生成:

手绘效果是在灰度化的基础上由立体效果和明暗效果叠加而成。

手绘效果的特点:

  • 一般都是灰色系的
  • 在边界上的线条比较重
  • 相同或相近色偏白色
  • 略有光源效果

方法:

  1. 梯度的重构

梯度值:明暗的变化率    图像数组的梯度可以通过numpy中的gradient()函数获取。

2. 光源效果:

3. 梯度和光源的归一化:

源代码如下:

from PIL import Image
import numpy as npa = np.asarray(Image.open("/Users/sijiahoe/Downloads/IMG_20200605_190915.jpg").convert('L')).astype('float')depth = 10.                    # 虚拟深度值 (0-100)
grad = np.gradient(a)          # 读取图像灰度的梯度值
grad_x, grad_y = grad          # 分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)  # 梯度归一化
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./Avec_el = np.pi/2.2                   # 光源的俯视角度,弧度值
vec_az = np.pi/4.                    # 光源的方位角度,弧度值# np.cos(vec_az)为单位光线在平面上的投影长度
dx = np.cos(vec_el)*np.cos(vec_az)   # 光源对x轴的影响
dy = np.cos(vec_el)*np.sin(vec_az)   # 光源对y 轴的影响
dz = np.sin(vec_el)              #光源对z 轴的影响b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)     # 光源和梯度相互作用,将梯度转化为灰度
b = b.clip(0,255)     # 为避免数组越界,将生成的灰度截取在0-255内im = Image.fromarray(b.astype('uint8'))  #重构图像
im.save('/Users/sijiahoe/Downloads/handDraw.jpg)

测试原图:

输出的图片:

(此生成的图像灰度和对比度较低,可以通过调节相关参数改进)

全文所有内容非原创,转载链接如下。

Python图像变换及手绘效果相关推荐

  1. Python实现图片手绘效果

    Python实现图片手绘效果 在图像处理领域中,手绘效果是一个非常有趣的特效.在这篇文章中,我们将讨论如何使用Python和PIL库来实现图片的手绘效果. 准备工作 在开始之前,我们需要安装PIL库. ...

  2. python数据分析与展示--图像的手绘效果

    目录 一.图像的数组表示 1.图像的RGB色彩模式 2.PIL库 二.图像变换 1.image转换成array 2.array转换成image 三.图像的手绘效果 1.实例介绍  ​ 2.编程实例 一 ...

  3. Python 数据分析与展示笔记2 -- 图像手绘效果

    Python 数据分析与展示笔记2 – 图像手绘效果 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展示 参考文档: ...

  4. Python实现图像的手绘效果

      用Python实现手绘图像的效果 1.图像的RGB色彩模式   图像一般使用RGB色彩模式,即每个像素点的颜色由红®.绿(G).蓝(B)组成.RGB三个颜色通道的变化和叠加得到各种颜色,其中: R ...

  5. Python 神仙姐姐图像手绘效果实现

    文章目录 一.图像的 RGB 色彩模式 二.Python的 PIL 库 三.图像的数组表示 四.图像的变换 五.图像的手绘效果实现 一.图像的 RGB 色彩模式 图像一般使用 RGB 色彩模式,即每个 ...

  6. Python -- 图像的手绘风格

    ** Python – 图像的手绘风格 ** 今天在mooc上了解到python可以做出手绘风格的图片,感觉很惊奇,很想知道python对于图片是如何处理的,因此上网搜了一些博主的文章,总结了一下. ...

  7. PS效果教程——冒充手绘效果

    PS效果教程--冒充手绘效果 先来发个原图和效果图: 图1 图2 开始拉! 1.先将原图复制一份 2.选择滤镜--风格化--查找边缘 图3 #p#副标题#e# 3.再选择滤镜--艺术效果--粗糙蜡笔, ...

  8. 利用Numpy+PIL读取图像实现手绘效果

    读取图像+简单处理 import numpy as np from PIL import Imagepath = "" #图像路径im = np.array(Image.open( ...

  9. [原创] 人物仿手绘效果--美女篇(超详细哦)

    [转自]http://68ps.5d6d.com/thread-11541-1-4.html 大家好!第一次写教程,写的不好,但还是希望大家能够给我点鼓励! 虽然效果处理的不尽人意,然而,我还是厚着脸 ...

  10. Three.js铅笔手绘效果实现

    在这个教程中,我们将学习如何使用 Three.js 后处理创建铅笔手绘效果. 我们将完成创建自定义后处理渲染通道.在 WebGL 中实现边缘检测.将法线缓冲区重新渲染到渲染目标以及使用生成和导入的纹理 ...

最新文章

  1. 解密美国五角大楼人工智能中心
  2. 图像投影特征图的波峰波谷查找的相关原理及利用差分遍历法查找波峰的OpenCV代码
  3. JSP中内置对象pageContent的使用
  4. DCMTK:DcmAttributeFilter类的测试程序
  5. openssh升级之后git账户免密登陆失效
  6. linux shell变量作用域,Shell变量的作用域:Shell全局变量、环境变量和局部变量
  7. 【java】System.arraycopy为什么快
  8. 【Flink】IncompatibleClassChangeError: Found class org.apache.flink.streaming.runtime.tasks.Processing
  9. RuoYiConfig中加入自定义属性值获取不到解决办法?
  10. java中类模型_java中的数据模型类
  11. Flask-SQLAlchemy - 不使用外键连表查询。记得常回来看我
  12. xp系统搭建iscsi服务器,配置Microsoft Windows XP对MDS/IPS-8的iSCSI主机
  13. 函数sum计算机怎么使用方法,sumif函数的使用方法
  14. 京东网页(动态)搭建,利用jquery实现
  15. C++ enum前置声明
  16. jmeter压力测试及服务器性能监控
  17. 鸡兔同笼python程序怎么写_鸡肉的做法大全_怎么做好吃_家常做法_下厨房
  18. tensorflow+python flask进行手写识别_Tensorflow训练识别手写数字0-9
  19. Python可视化数据分析02、Scrapy框架-强化测试Scrapy-CSS
  20. 创建一个电脑对象,该对象要有颜色,重量,品牌,型号,可以看电影,听音乐,打游戏和敲代码

热门文章

  1. 机器人码垛手持式编程_工业机器人的码垛编程方法
  2. Nessus安裝教程
  3. comsol显示电场计算结果_comsol电磁场仿真案例
  4. Helix QAC所提供的四种抑制方式
  5. md5加密算法~Java语言实现
  6. java加密算法之MD5篇
  7. JAVA就业管理系统(JAVA毕业设计)
  8. 51单片机的交流电流检测系统设计(程序+原理图+PCB)
  9. vue element web 表单设计工具
  10. android x86玩和平精英,和平精英iOS和安卓可以一起玩吗 和平精英iOS和安卓数据互通吗...