# cv2保存图片类型错误执行报错cv2. error: OpenCV\(4.6.0\) :-1: error: \(-5:Bad argument\) in function 'imwrite' - img is not a numpy array

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): GPU

软件环境: MindSpore 版本: 1.7.0

执行模式： 静态图\(GRAPH\)

Python 版本: 3.7.6

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

将优化好的图像用cv2进行图片保存，由于没有将tensor转换为numpy，导致cv2.imwrite运行失败。

2.2 脚本信息

```
import cv2
context.set_context(mode=context.GRAPH_MODE, device_target="GPU")

adversarial_tensor, mask_tensor  = adversarial.train(attack_method)
cv2.imwrite("./cv2对抗图像.jpg",adversarial_tensor)
```

**3. 根因分析**

看报错信息img is not a numpy array，说明adversarial\_tensor不是numpy类型，不能直接保存。

**4. 解决方案**

解决方案说明：把adversarial\_tensor类型转换为numpy类型 修改后代码：

```
import cv2
context.set_context(mode=context.GRAPH_MODE, device_target="GPU")

 adversarial_tensor, mask_tensor  = adversarial.train(attack_method)
cv2.imwrite("./cv2对抗图像.jpg",
                np.transpose(adversarial_tensor.asnumpy(), (1, 2, 0)))
```

正常执行结果adversarial\_tensor可以保存为图片。

