1、图像的RGB色彩模式

PIL

PIL, Python Image Library

PIL库是一个具有强大图像处理能力的第三方库

在命令行下的安装方法: pip install pillow

from PIL import Image

Image是PIL库中代表一个图像的类(对象)

from PIL import Image

import numpy as np

im=np.array(Image.open(r"C:\Users\Administrator\Desktop\timg.jpg"))

print(im.shape,im.dtype)

可以看出图像是一个三维数组,800行,1200列,每一个点分别是RGB三个值。

2、图像的变换

(1)

b=[255,255,255]-im

a=Image.fromarray(b.astype('uint8'))%生成新的图像三维数组

a.save(r"C:\Users\Administrator\Desktop\timg_2.jpg")

(2)

模式L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:

L = R * 299/1000 + G * 587/1000+ B * 114/1000

下面我们将图像转换为“L”图像。

a=np.array(Image.open(r"C:\Users\Administrator\Desktop\timg.jpg"))

b=np.array(Image.open(r"C:\Users\Administrator\Desktop\timg.jpg").convert('L'))

c=Image.fromarray(b.astype('uint8'))

c.save(r"C:\Users\Administrator\Desktop\timg_5.jpg")

RGB三个数变为了一个数。

(3)

a=np.array(Image.open(r"C:\Users\Administrator\Desktop\timg.jpg").convert('L'))%变为灰度值图片

a

Out[12]:

array([[104, 104, 104, ..., 145, 145, 145],

[104, 104, 104, ..., 145, 145, 145],

[104, 104, 104, ..., 145, 145, 145],

...,

[ 70, 78, 79, ..., 73, 65, 78],

[ 72, 79, 78, ..., 76, 49, 83],

[ 73, 71, 69, ..., 118, 76, 97]], dtype=uint8)

b=255-a

b

Out[14]:

array([[151, 151, 151, ..., 110, 110, 110],

[151, 151, 151, ..., 110, 110, 110],

[151, 151, 151, ..., 110, 110, 110],

...,

[185, 177, 176, ..., 182, 190, 177],

[183, 176, 177, ..., 179, 206, 172],

[182, 184, 186, ..., 137, 179, 158]], dtype=uint8)

im=Image.fromarray(b.astype('uint8'))

im.save(r"C:\Users\Administrator\Desktop\timg_3.jpg")

(4)

d=255*(a/255)**2 %平方变换

im=Image.fromarray(d.astype('uint8'))

im.save(r"C:\Users\Administrator\Desktop\timg_4.jpg")

(5)

d=(100/255)*a+150%区间变换

im=Image.fromarray(d.astype('uint8'))

im.save(r"C:\Users\Administrator\Desktop\timg_4.jpg")

2、图像手绘效果分析

手绘效果的几个特征:

• 黑白灰色

• 边界线条较重

• 相同或相近色彩趋于白色

• 略有光源效果

(1)梯度重构

利用像素之间的梯度值和虚拟深度值对图像进行重构

(2)光源效果

根据灰度变化来模拟人类视觉的远近程度

(3)

(4)

from PIL import Image

import numpy as np

a = np.asarray(Image.open(r"C:\Users\Administrator\Desktop\timg.jpg").convert('L')).astype('float')

depth = 10.

grad = np.gradient(a) #梯度值,

grad_x, grad_y = grad

grad_x = grad_x*depth/100. #列梯度值*0.1

grad_y = grad_y*depth/100.

A = np.sqrt(grad_x**2 + grad_y**2 + 1.) #相当于grad_z=1

uni_x = grad_x/A

uni_y = grad_y/A

uni_z = 1./A #梯度归一化

vec_el = np.pi/2.2

vec_az = np.pi/4.

dx = np.cos(vec_el)*np.cos(vec_az)

dy = np.cos(vec_el)*np.sin(vec_az)

dz = np.sin(vec_el) #长度为1,投影x,y,z长度

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)

b = b.clip(0,255)

im = Image.fromarray(b.astype('uint8'))

im.save(r"C:\Users\Administrator\Desktop\timg_6.jpg")

数据变化过程如下

目的其实是将数据两级化,要么黑要么白,更好凸显手绘的感觉

x,y梯度变化越大,,则z的梯度比例越小,此时求出的变化后的灰度值越小,颜色越黑。

相反,则灰度值越大,越白,将黑白分明就显示出来了。

python图像色彩分析_Python——图像手绘效果相关推荐

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

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

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

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

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

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

  4. NumPy处理图像:色彩取反、图片变灰、图像手绘

    教程:Python数据分析与展示_北京理工大学 目录 图像的数组表示 图像的变换 "图像的手绘效果"实例分析 图像的数组表示 图像一般使用RGB色彩模式,即每个像素点的颜色由红( ...

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

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

  6. Python实现图片手绘效果

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

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

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

  8. python将照片转换成手绘图片

    最近在b站学习数据分析时,看到了可以用numpy将照片转换成手绘效果.自己整上代码学习试了半天,调整了参数并看了效果.代码如下: # -*- coding: utf-8 -*- "" ...

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

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

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

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

最新文章

  1. JavaScript类型·对象·函数
  2. hibernate连接mysql密码错误,hibernate+mysql too many connections错误
  3. 有兴趣吗?程序员分手手册,教你如何恢复单身
  4. 封神系统-运维大脑的日志检测
  5. C# 系统应用之ListView控件 (二).加载选中节点文件夹下文件信息
  6. 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
  7. mysql scws_php利用scws实现mysql全文搜索功能的方法
  8. 利用宝塔部署若依前后分离项目(详细教程)
  9. ansible的lookup
  10. 帕雷诺的个展“共此时”在沪开幕 体验真实与虚妄的交错人生
  11. 供应XBF-01型多功存储介质粉碎机
  12. snmp连接工具_2020好用的综合性网络监控工具
  13. 整理了一些已分类的产品Axure元件库,助力正在找Axure组件库的同学高速成长
  14. 这7款文本编辑器,程序员都应该知道
  15. http://www.spiceworks.com
  16. 刻意玩具教具化没用,童心制物如何让孩子真正玩出名堂
  17. cad 三点绘制斜矩形
  18. 联想微型计算机装Win10,联想小新 潮5000重装win10系统教程
  19. 实时竞价RTB广告平台_传漾科技_中国领先的智能数字营销引擎
  20. alanwang[GDOU] 简单练习 判断一个年份是否为闰年

热门文章

  1. 在函数前面加上WINAPI、CALLBACK
  2. python和r哪个实用_R和Python谁更好?
  3. windows存储空间清理,C盘空间清理教程,磁盘清理方法
  4. 【淘宝装修】PS DW 介绍 教程 代码(终极篇)
  5. Oracle数据库增删改查
  6. 极大似然估计和最大似然估计定义
  7. 用vant 自定义小程序tabBar
  8. windows——win10如何远程控制另一台电脑
  9. QAC/QAC++静态软件测试工具介绍
  10. linux编译 __stdcall,Linux中是否有STDCALL?