PIL读入图片转为BGR

PIL读入图片默认通道顺序是RGB,可通过下面程序将图片转为BGR顺序

image = Image.open(img)                        # 读入图片
image = image.convert("RGB")                   # 图片转为RGB格式
image = np.array(image)[:, :, ::-1]            # 将图片转为numpy格式,并将最后一维通道倒序
image = Image.fromarray(np.uint8(image))       # 将numpy转换回PIL的Image对象

 

### 在 Jupyter Notebook 中使用 Python 将图片换为灰度图 为了在 Jupyter Notebook 环境中实现这一目标,可以选择多种图像处理库。以下是两种常用的方法:一种基于 OpenCV 库[^1],另一种则利用 Pillow 库[^2]。 #### 方法一:使用 OpenCV 进行换 OpenCV 是一个强大的计算机视觉库,在读取和操作图像方面非常高效。下面展示了如何通过它加载一张彩色图片并将其转为灰度版本: ```python import cv2 from matplotlib import pyplot as plt # 加载原始彩⾊图像 color_image = cv2.imread('example.jpg') if color_image is None: print("无法找到或打开图像文件.") else: # 将 BGR 色彩空间换为 RGB 以便于正确显示 rgb_color_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2RGB) # 把图像化为灰度形式 gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY) # 显示原图与灰度图 fig, ax = plt.subplots(1, 2) ax[0].imshow(rgb_color_image) ax[0].set_title('Original Image') ax[1].imshow(gray_image, cmap='gray') ax[1].set_title('Grayscale Image') plt.show() ``` 这段代码首先导入必要的模块,并尝试从磁盘上读入一幅名为 `example.jpg` 的图像。接着,将此图像的颜色通道顺序由默认的 BGR 改变为更常见的 RGB 形式以确保后续可视化效果准确无误;之后再执行实际的色彩到灰阶的变化过程。最后一步则是调用 Matplotlib 来展示两个版本之间的差异。 #### 方法二:采用 Pillow 实现相同功能 对于那些偏好简单易懂接口的人来说,Pillow 可能会是一个更好的选择。这里给出一段类似的例子说明怎样运用这个工具包完成同样的任务: ```python from PIL import Image import numpy as np import matplotlib.pyplot as plt try: with Image.open('example.jpg') as img: # 如果不是RGB模式,则先换 if img.mode != 'RGB': img = img.convert('RGB') # 创建副本用于比较 grayscale_img = img.copy().convert('L') # 展示两幅图画 fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4)) axes[0].imshow(img) axes[0].axis('off') axes[0].set_title('Color Image', fontsize=16) axes[1].imshow(grayscale_img, cmap=plt.cm.gray) axes[1].axis('off') axes[1].set_title('Gray Scale Image', fontsize=16) plt.tight_layout() plt.show() except FileNotFoundError: print("未能定位到指定路径下的图像文件") ``` 上述脚本同样实现了图像的加载、颜色至灰度的变以及最终的结果呈现。值得注意的是,这里的错误处理机制更加友好一些——当找不到给定名称的文件时能够给予清晰提示而不是抛出异常终止程序运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值