自学内容网 自学内容网

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

在 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()

原文地址:https://blog.csdn.net/weixin_44194001/article/details/143918967

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!