报错 cv2.imwrite(r'./pgd_img/adver_results/{}.jpg'.format(i), np.transpose(adv_imgs), (1, 2, 0)) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:738: error: (-2:Unspecified error) in function 'bool __cdecl cv::imwrite_(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &,const class std::vector<int,class std::allocator<int> > &,bool)' > Encoding 'params' must be key-value pairs: > '(params.size() & 1) == 0' > where > 'params.size()' is 3
时间: 2023-12-19 14:04:05 浏览: 536
图像显示OpenCV2
这个报错提示参数设置有误,具体来说是imwrite函数的第三个参数不符合要求。根据报错信息,看起来是传递的参数列表长度不符合要求,需要使用key-value pairs来设置参数。建议检查一下传递给imwrite函数的第三个参数是否正确,应该使用一个字典来设置参数,其中包含图像的编码方式、压缩质量等参数。例如可以这样设置:
```
cv2.imwrite(r'./pgd_img/adver_results/{}.jpg'.format(i), np.transpose(adv_imgs, (1, 2, 0)), params={"quality": 100})
```
其中,quality表示JPEG图像的压缩质量,取值范围是0-100,100表示无损压缩。经过上述修改后,应该就可以成功保存图像了。
阅读全文