Image.open()得到的数据于cv2.imread()读出的数据有什么不同,应该如何转换
时间: 2024-02-12 11:05:26 浏览: 67
PIL.Image.open和cv2.imread的比较与相互转换的方法
`Image.open()`返回的是`PIL.Image.Image`对象,而`cv2.imread()`返回的是`numpy.ndarray`数组。这两种类型的数据存储方式不同,因此它们之间的转换需要进行一些处理。
如果想要将`PIL.Image.Image`对象转换为`numpy.ndarray`数组,可以使用以下代码:
```python
from PIL import Image
import numpy as np
import cv2
img_pil = Image.open('test.jpg')
img_np = np.asarray(img_pil)
```
如果想要将`numpy.ndarray`数组转换为`PIL.Image.Image`对象,可以使用以下代码:
```python
img_cv2 = cv2.imread('test.jpg')
img_pil = Image.fromarray(cv2.cvtColor(img_cv2, cv2.COLOR_BGR2RGB))
```
需要注意的是,`cv2.imread()`默认读取的颜色通道顺序为BGR,而`PIL.Image.Image`默认为RGB。因此在将`numpy.ndarray`数组转换为`PIL.Image.Image`对象时需要进行颜色通道转换,这里使用`cv2.cvtColor()`函数将BGR通道转换为RGB通道。
阅读全文