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

通过Python PIL.Image加载图片,使用numpy进行图像简单处理 Python PIL.Image加载图片,使用numpy进行图像简单处理 读入图片转换为ndarray: import numpy as np from PIL import Image a_num = np.array(Image.open('1.png')) a_num 转化的数组: array([[[181, 179, 193], [180, 177, 194], ... 阅读详情

读取图像+简单处理

import numpy as np
from PIL import Image

path = ""  #图像路径

im = np.array(Image.open(path+"img.png"))
print(im.shape,im.dtype)

b = [255,255,255] - im     #取像素互补值
im = Image.fromarray(b.astype('uint8'))

im.save(path+"test1.png")

b = np.array(Image.open(path+"img.png").convert('L')) #取灰度值

a = 255 - b    #灰度值互补值
im = Image.fromarray(a.astype('uint8'))
im.save(path+"test2.png")

c = (100/255)*b + 150   #将原值压缩到一定范围中
im = Image.fromarray(c.astype('uint8'))
im.save(path+"test3.png")

d = 255*(b/255)**2   #将原值压缩到一定范围中
im = Image.fromarray(d.astype('uint8'))
im.save(path+"test4.png")

效果:
在这里插入图片描述

图像的手绘效果实现

手绘效果的几个特征:

  1. 黑白灰色
  2. 边界线条较重
  3. 相同或相近色彩趋于白色
  4. 略有光源效果

实现思路:

  • 事实上,手绘风格是在对图像进行灰度化的基础上,由立体效果和明暗效果叠加而成的。
  • 灰度代表着图像的明暗变化,梯度值表示的是灰度的变化率,所以我们可以通过调整像素的梯度值来间接改进图像的明暗程度
  • 立体效果通过添加虚拟深度值来实现

所以解决方案为:利用像素之间的梯度值和虚拟深度值对图像进行重构,根据灰度变化来模拟人类视觉的明暗程度

from PIL import Image
import numpy as np
path = ""  #图像路径
a = np.asarray(Image.open(path+'img.png').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. / A

vec_el = np.pi / 2.2     # 光源的俯视角度,弧度值
vec_az = np.pi / 4.     # 光源的方位角度,弧度值
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)       #  防止灰度值溢出

im = Image.fromarray(b.astype('uint8'))        # 重构图像
im.save(path + 'draw.png')

原图:
请添加图片描述
生成图像:
请添加图片描述

使用Python实现图像的手绘风格效果 本文介绍了一种使用Python编程语言,结合PIL(Python Imaging Library)和NumPy库,将普通灰度图像转换成具有手绘风格效果的图像的方法。通过计算图像的梯度并模拟光照效果,我们可以生成具有深浅变化的阴影,从而使图像呈现出类似手绘的质感。 阅读详情

相关推荐

numpy的实例:图像的手绘效果(3)

1、图像的数组表示 PIL库 PIL,PythonImageLibrary PIL库是一个具有强大图像处理能力的第三方库 在命令行下的安装方法:pipinstallpillow fromPIL importImage Image是PIL库中代表一个图像的类(对象) 图像是一个由像素组成的二维矩阵,每个元素是一个RGB值:RGB值: (R, G, B) 2、 图像处理代码; ...

weixin_41999529的博客 1208

python骚操作——图片灰度处理

先来张图片感受下: 处理过的图片 代码奉上: from PIL import Image import numpy as np a = np.asarray(Image.open('1.jpg').convert('L')).astype('float') depath = 10 # (0-100) grad = np.gradient(a)# 取图像灰度的梯度值 grad_x,g...

sixkery的博客 4877

Python实现绘制PNG图片及代码示例

运行上述代码,你将得到一张带有红色矩形、蓝色直线和绿色圆形的PNG图片,它的大小为400x400像素。你可以在代码中修改参数来生成不同的图片,例如改变绘制的颜色、形状等等。在Python中,我们可以利用第三方库Pillow来生成和处理图片。在接下来的代码示例中,我们将使用Pillow库来生成一个简单的PNG格式的图片,并显示出来。在本文中,我们使用了Pillow库来绘制PNG图片,并提供了完整的Python代码示例。希望这个简单的示例能为你提供一些有用的参考和启发。首先,我们需要安装Pillow库。

与其临渊羡鱼,不如退而结网 887

Python个人笔记

Python个人学习笔记

陈嘿萌的博客 3279

Python在多级文件夹中删除非图片文件(数据清洗)

【代码】Python在多级文件夹中删除非图片文件(数据清洗)

qq_34717531的博客 340

Python 图像数组变换及手绘效果实现

# 用到的第三方库 from PIL import Image import numpy as np 1. 图像的数组表示 图像是一个由像素组成的二维矩阵,每一个元素是一个RGB值。 from PIL import Image import numpy as np im = np.array(Image.open(r'D:\test\001.jpg')) # 打开一个图片 生成数组对象 print(im.shape, im.dtype) # 输出结果 # (854, 960, 3) uint8

叶庭云 成为自己的光 8739

python实现手绘图片效果

from PIL import Image import numpy as np #为了便于文件的导入,可以使用相对路径,将文件和程序放在同一个文件夹下 vec_el=np.pi/2.2 vec_az=np.pi/4. depth=10. im=Image.open("HIT2.jpg").convert('L') a=np.asarray(im).astype('float') grad=n...

米兰小子SHC 3837

如何用Python爬取中国土地市场网2000-2023年土地出让数据(含经纬度)

本文详细介绍了如何使用Python爬取中国土地市场网2000-2023年的土地出让数据(含经纬度),提供了一套高效的技术方案。通过应对动态加载的反爬机制、优化地理编码数据存储和设计异常处理流程,帮助开发者建立自动化数据采集管道。方案已在商业地产分析项目中验证,可稳定采集超过50万条土地交易记录。

weixin_30566063的博客 174

使用 numpy 和 PIL 进行简单的图像处理

内容来自中国大学生MOOC python 系列课程,在此做一个记录 直接贴代码 from PIL import Image import numpy as np # 反相 # a = np.array(Image.open("test.jpg")) # b = [255, 255, 255] - a # 灰度,反相 # a = np.array(Image.open("test.jpg").c

unique 的博客 5594

SAP OBYC自动过账全解析:从BSX到WRX的会计科目配置指南

本文深入解析SAP OBYC自动过账功能,从BSX到WRX的会计科目配置全流程,涵盖评估分组代码、事务码和评估类等核心概念。通过实战案例展示如何实现库存变动到财务过账的自动化流转,提升企业财务数据的准确性和效率。

weixin_29239279的博客 421

SPSS新手教程—两步聚类之结果解读

在《详解SPSS两步聚类之参数设置》一文中,我们已经了解了两步聚类的优点、分析原理,以及参数设置的技巧。 在本节中,会对IBM SPSS Statistics聚类后的结果进行解读,其中会涉及到最终聚类的结果、聚类的质量、变量重要性、聚类特征的解读。 如图1所示,我们先来回顾下本例数据在参数设置面板中的详细设置。 图1:二阶聚类设置 一、数值结果 根据上述参数设置,得到如下的数值分析结果。 首先看到自动聚类结果,如图2所示为聚类的透视表结果,展示了不同聚类数目下的BIC、BIC变化量、BIC变

nekonekoboom的博客 3万+

pil python 读取像素值_Python实现手绘图

利用python的Numpy及PIL第三方库实现图片的手绘效果。PIL第三方库是一个具有强大图像处理能力的第三方库。 数字图像数据可以用矩阵来表示,因此可以采用矩阵理论和矩阵算法对数字图像进行分析和处理。最典型的例子是灰度图像,如图1-2所示。灰度图像的像素数据就是一个矩阵,矩阵的行对应图像的高(单位为像素),矩阵的列对应图像的宽(单位为像素),矩阵的元素对应图像的像素,...

weixin_33261455的博客 356

ANSYS-CFX,计算时报错,内存参数报错,return code 1【终极解决方案】

ANSYS-CFX,计算时报错,内存参数报错,return code 1【终极解决方案】 在CFX计算时经常会遇到内存不足的错误报告,有的算例网格并不多也会出现这样的问题,本文就最近遇到的内存错误问题以及解决方法进行简单的总结,以供大家参考。 1 CFX-Solver Manager内存种类 打开Define Run,面板上的Partitioner、Solver、Interpolator选项中分别都有关于内存的设置选项。当出现内存不足错误时,应该设置哪一个选项的内存参数,要看是哪一部分的内存不足。 2 C

深海民工CFDer 3万+

PIL库的使用

概述 PIL(Python Image Library) PIL库是一个具有强大图像处理能力的第三方库。 安装 在命令行下执行: pip install pillow 图像的数组表示及转换 图象是一个由像素组成的二维矩阵,每个元素都是一个RGB值(R, G, B) >>> from PIL import Image >>> import numpy as np...

傅里叶变不出的博客 363

多思计组实验实验六 微程序控制器实验

实验六 微程序控制器实验

qq_53089329的博客 3791

1、Ka频段双极化低剖面卫通相控阵天线

设计了双馈口叠层十字缝隙耦合天线,采用“双线极化天线 +旋转馈电 + 移相控制”架构,采用双馈口的叠层十字缝隙耦合天线,并以 2 x2 阵列为主体,旋转排布实现二次圆极化,同时极化可切换,通过多层 PCB 工艺实现天线层、控制/电源层功分网终层、芯片层一体化集成,研制出 64 阵元的圆极化可切换发射天线,测试结果表明:天线工作 频段为 27.5 ~31 GHz,可实现60°扫描,法向轴比

qq_43416206的博客 4371

numpy学习笔记(四)-图像

*图像的RGB模式,已经知道了. *PIL库,是一个具有强大图像处理能力的第三方库. *from PIL import Image,image是Im*age表示图像的对象 *.图像的数组表示,以三元元组为元素的二维数组. 最终是一个三维数组,维度分别是高度,宽度,和RGB值 *图像的变换: 读入图像后,获得像素RGB值,修改后保存为新的文件 a=np.array(Image.open("path...

realliyuhao的博客 522

【2026年得物春招算法岗- 4月18日 -第二题- 老张爬山】(题目+思路+Java&C++&Python解析+在线测试)

这篇文章介绍了一个动态规划问题,解决老张在n天内安排爬山计划以最大化愉悦值的问题。题目允许最多k次打破"不能连续两天爬山"的规则限制。 摘要要点: 使用三维动态规划数组dp[i][j][s],表示第i天结束时已用j次机会、当天状态为s(0不爬/1爬)时的最大愉悦值 状态转移考虑两种情况:当天不爬山时取前一天两种状态的最大值;当天爬山时分别处理前一天不爬山和爬山(需消耗机会)的情况 最终结果为考虑所有可能用掉的k次机会后,最后一天两种状态的最大值 提供了Python、Java和C++三种实

m0_73659489的博客 1357

python astype()_Python实现手绘图

利用python的Numpy及PIL第三方库实现图片的手绘效果。PIL第三方库是一个具有强大图像处理能力的第三方库。 数字图像数据可以用矩阵来表示,因此可以采用矩阵理论和矩阵算法对数字图像进行分析和处理。最典型的例子是灰度图像,如图1-2所示。灰度图像的像素数据就是一个矩阵,矩阵的行对应图像的高(单位为像素),矩阵的列对应图像的宽(单位为像素),矩阵的元素对应图像的像素,...

weixin_39782709的博客 495

R语言广义加型模型(GAM)的运用例子及实现教程

一旦拟合了广义加型模型,我们可以查看模型摘要和诊断,以评估模型的质量和拟合情况。# 查看模型摘要响应变量:mpg(汽车的燃油效率)拟合函数:mpg ~ s(hp) + s(wt)

Mrrunsen的博客 3447

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

numpy对图像的处理演示

pip3 install pillow from PIL import Image import numpy as np im=np.array(Image.open('timg.jpg')) print(im.shape,im.dtype) from PIL import Image import numpy as np im=np.array...

weixin_30624825的博客 438

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

教程:Python数据分析与展示_北京理工大学 目录图像的数组表示图像的变换“图像的手绘效果”实例分析 图像的数组表示 图像一般使用RGB色彩模式,即每个像素点的颜色由红( R)、绿(G)、蓝(B)组成。这三种颜色形成三种颜色通道,RGB三个颜色通道的变化和叠加得到各种颜色,其中R为红色,取值范围为0-255;G为绿色,取值范围为0-255;B为蓝色,取值范围为0-255。 RGB形成的颜色包括了人类视力所能感知的所有颜色,因此在计算机的使用中,一般的图像都采用RGB色彩。 Python中提供了一个处理图

m0_56450064的博客 6177

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

利用Numpy和PIL进行图像的简单处理

简单图像处理:手绘风格

weixin_45912931的博客 7272

Python图像读取,图像的PIL.Image, numpy.darray, Tensor形式相互转换

文章目录Python读取图像的两种推荐方式使用PIL读取图像使用opencv-python读取图像numpy.darray 与 Tensor 相互转换PIL.Image 与 numpy.ndarray 相互转换PIL.Image 转换成 TensorTensor 转换成 PIL.Image参考链接 Python读取图像的两种推荐方式   uint8是无符号八位整型,表示的是区间[0, 255]内的...

NeXT_Vision的博客 7141

【Numpy入门实例:图像的手绘效果】

Numpy入门实例:图像的手绘效果 在观看博客正文前,读者首先需要具备简单的Python知识和一些Numpy库的基本操作。下面请跟随笔者的脚步走进本次的实例教程——图像的手绘风格绘制!

m0_47743127的博客 5236

图像的手绘效果(PIL的应用实例)

图像的变换: 原图像: 1.读入图像后,获得像素RGB值(所有RGB值取反),修改后保存为新的文件 from PIL import Image import numpy as np im=np.array(Image.open("D:/pytest/a.jpeg")) print(im.shape,im.dtype) b=[255,255,255] -im newim=Image.fr...

老肥码码码 1134
上一篇: etcd的使用(GO)
下一篇: IDEA创建MVN项目
Andy in boots
博客等级 码龄7年 73粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值