cv2.imwrite保存Tensor引起类型报错:cv2.error: OpenCV(4.6.0) : |
您所在的位置:网站首页 › python中imwrite › cv2.imwrite保存Tensor引起类型报错:cv2.error: OpenCV(4.6.0) : |
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 报错信息cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'imwrite' Overload resolution failed: img is not a numpy array, neither a scalar Expected Ptrcv::UMat for argument 'img' 2.3 脚本代码 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类型,不能直接保存。 调试发现adversarial_tensor是Tensor类型。 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可以保存为图片。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |