图像处理-简单的图像操作

在 Python 的 Pillow(即 PIL)库中,使用 Image.open 打开的图片默认维度是 H, W, C(高度、高度、通道数)。
Image.open 打开的图像是 PIL.Image.Image 类型,不是普通的 NumPy 数组。它是一个专门用于处理图像的类,可以进行操作如显示、裁剪、旋转等。

img = Image.open('example.jpg')  # H W C
np_img = np.asarray(img).transpose(2, 0, 1)  # 转换为 (C, H, W)

np.asarray(img) 会将 PIL.Image.Image 对象转换为 NumPy 数组类型

plt.figure(figsize=(10, 5))  #W H

这里设置的图形窗口,宽度为10,高度为5

import numpy as np
import torch
from PIL import Image
import matplotlib.pyplot as plt
import os
import matplotlib.pyplot as plt
from matplotlib import rcParams

# 设置中文字体(SimHei 是黑体)
rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
os.environ["OMP_NUM_THREADS"] = "1"

def rgb_to_gray(img):
    gray_img = np.empty((1, img.shape[0], img.shape[1]), np.dtype('float32'))
    img = np.transpose(img, (1, 2, 0))  # 将通道移到最后
    img = Image.fromarray(np.uint8(img))
    img = img.convert('L')  # 转换为灰度图
    gray_img = np.expand_dims(np.asarray(img), axis=0)
    return gray_img

# 读取原图
img = Image.open('example.jpg')  #H W C

np_img = np.asarray(img).transpose(2, 0, 1)  # 转换为 (C, H, W)

# 转换为灰度图
gray_img = rgb_to_gray(np_img)

# 显示原图和灰度图
plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)
plt.title("原图")
plt.imshow(img)
plt.axis('off')

plt.subplot(1, 2, 2)
plt.title("灰度图")
plt.imshow(gray_img[0], cmap='gray')
plt.axis('off')  #关闭坐标轴

plt.tight_layout()  #自动调整
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LinlyZhai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值