图像表示及操作

本文介绍如何使用Python的PIL库进行图像处理,包括转换图像为灰度图及创建手绘效果。通过调整RGB色彩模式和利用numpy库操作像素值来实现图像变换,并详细解释了手绘效果的具体实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的表示


图像的RGB色彩模式

RGB三个颜色通道的变化和叠加得到各种颜色,其中
- R红色,取值范围,0-255
- G绿色,取值范围,0-255
- B蓝色,取值范围,0-255

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

from PIL import Image

图像是一个由像素组成的二维矩阵,每个元素是一个RGB值

from PIL import Image
import numpy as np
a = np.array(Image,open("..."))
print(a.shape, a.dtype)
图像的变换

读入图像后,获得像素RGB值,修改后保存为新的文件

from PIL import Image
import numpy as np
a = np.array(Image,open("...").convert('L'))  #转化为灰度值
b = 255 - a
im = Image.fromarray(b.astype('uint8'))
im.save("...")
手绘效果

手绘效果的几个特征

  • 黑白灰色
  • 边界线条较重
  • 相同或相近色彩趋于白色
  • 略有光源效果
from PIL import Image
import numpy as np

a = np.asarray(Image.open('F://pic.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. / A

vec_e1 = np.pi / 2.2                        #光源的俯视角度,弧度值
vec_ez = np.pi / 4.                         #光源的方位角度,弧度值
dx = np.cos(vec_e1) * np.cos(vec_ez)        #光源对x轴的影响
dy = np.cos(vec_e1) * np.sin(vec_ez)        #光源对y轴的影响
dz = np.sin(vec_e1)                         #光源对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('F://pic2.jpg')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值