当使用cv::imwrite()
函数
保存图像时,有可能会因为诸如权限不足、目录不存在、文件格式不正确等原因导致保存失败。这时可以通过查看cv::imwrite()
函数
的返回值或调用cv::imencode()
函数
来获取保存失败的原因。
具体地,cv::imwrite()
函数
将返回一个布尔类型的值,表示图像是否成功保存。如果保存失败,可以调用cv::imencode()
函数
将图像编码为一个矢量的字节编码,然后使用std::string的构造
函数
将编码后的字节转换为字符串,最后打印出来即可,例如:
cv::Mat image = cv::imread("test.jpg");
bool result = cv::imwrite("output.png", image);
if(!result){
std::vector<uchar> buffer;
cv::imencode(".png", image, buffer);
std::string error_msg(buffer.begin(), buffer.end());
std::cout << "Error message: " << error_msg << std::endl;
上面的代码先使用cv::imwrite()尝试保存图像,如果保存失败,则使用cv::imencode()将图像编码为一个矢量的字节编码,然后使用std::string的构造函数将字节编码转换为字符串,最后打印出来即可。