opencv numpy.ndarray 转换成图片格式
时间: 2023-10-14 08:05:01 浏览: 404
可以使用OpenCV中的`imwrite`函数将`numpy.ndarray`数组保存为图片格式。以下是一个例子:
```python
import cv2
import numpy as np
# 创建一个随机的numpy数组作为图像
img_array = np.random.randint(0, 256, size=(300, 400, 3), dtype=np.uint8)
# 将numpy数组保存为图片
cv2.imwrite("image.jpg", img_array)
```
这将创建一个名为`image.jpg`的图像文件,其中包含随机生成的300x400像素的彩色图像。
相关问题
pillow库里imageqt.py报错AttributeError: 'numpy.ndarray' object has no attribute 'mode'
这个错误通常是由于使用Pillow库中的ImageQt模块时,传入的图像数据格式不正确导致的。ImageQt模块提供了将Pillow图像转换为Qt图像的功能,但是它要求传入的图像必须是Pillow库中的Image对象,而不是常用的numpy数组格式。
解决方法是将numpy数组格式的图像先转换为Pillow库中的Image对象,然后再使用ImageQt模块进行转换。可以使用以下代码实现转换:
```python
from PIL import Image
from PIL.ImageQt import ImageQt
import numpy as np
import cv2
# 读取一张图片
img = cv2.imread('test.jpg')
# 将numpy数组格式的图像转换为Pillow库中的Image对象
img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 使用ImageQt模块将Pillow库中的Image对象转换为Qt图像
qt_img = ImageQt(img_pil)
```
上面的代码中,我们首先使用OpenCV库读取一张图片,并将其转换为numpy数组格式。然后使用Pillow库中的Image对象将numpy数组格式的图像转换为Pillow库中的Image对象。最后,我们再使用ImageQt模块将Pillow库中的Image对象转换为Qt图像。
np.ndarray转化为cv2
np.ndarray可以通过使用np.array方法将其转换为cv2可以处理的格式。cv2读取和保存的图片都是ndarray数组,形状为HxWxC。要注意的是,cv2读取的图片通道顺序是BGR,如果需要使用正常的RGB通道顺序,可以使用cv2.cvtColor方法进行通道转换。保存时,数据形式是uint8的ndarray数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [opencv,numpy,tensor格式转换](https://blog.csdn.net/weixin_38645650/article/details/126031126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文