cv2和PIL相互转化
时间: 2024-10-17 09:06:59 浏览: 18
`cv2`是Python OpenCV库的一部分,主要用于计算机视觉,而`PIL`(Pillow)则是处理图像的一个常用库。两者都可以处理图像,但在功能上有一些差异。如果你想在它们之间转换图像格式或数据结构,可以按以下步骤进行:
1. **从`PIL`到`cv2`**:
- `PIL`中的`Image`对象可以先转为`numpy`数组,然后利用`cv2`读取:
```python
from PIL import Image
pil_image = Image.open('image.jpg')
np_array = np.array(pil_image)
cv2_image = cv2.cvtColor(np_array, cv2.COLOR_RGB2BGR) # 如果PIL图片是RGB,需要转换成OpenCV兼容的颜色空间
```
2. **从`cv2`到`PIL`**:
- 首先,`cv2`读取的图像通常是BGR格式,需要转换回RGB,然后转换为`PIL`接受的数据格式:
```python
image_bgr = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)
pil_image = Image.fromarray(image_rgb)
```
3. **保存转换后的图像**:
- 使用相应库进行保存:
```python
pil_image.save('output.jpg') # PIL
cv2.imwrite('output.jpg', cv2_image) # cv2
```
阅读全文