OpenCV imwrite()不保存图像

7 c++ opencv

我试图从我的Mac上保存OpenCV图像,我使用以下代码,到目前为止它还没有工作.

cv::imwrite("/Users/nickporter/Desktop/Gray_Image.jpg", cvImage);
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到为什么这可能不会保存?

her*_*tao 14

OpenCV JPG有时会在保存图像方面遇到问题,请尝试保存到BMP:

cv::imwrite("/Users/nickporter/Desktop/Gray_Image.bmp", cvImage);
Run Code Online (Sandbox Code Playgroud)

此外,在此之前,请确保您的图像cvImage有效.你可以先显示图像来检查它:

namedWindow("image", WINDOW_AUTOSIZE);
imshow("image", cvImage);
waitKey(30);
Run Code Online (Sandbox Code Playgroud)

  • 我一直试图保存一个血腥的jpg图像最长的时间....尝试了我能想到的一切,改为.bmp并且突然它起作用了.谢谢老兄,血淋淋的MVP! (2认同)

Pen*_*hao 6

我遇到了同样的问题,一个可能的原因是放置图像的目标文件夹。假设您要将A.jpg复制到folder "C:\\folder1\\folder2\\",但是实际上folder2不存在时,复制将无法成功(这是根据我的实际测试,而不是官方声明)。我通过检查文件夹是否存在并创建一个文件夹(如果不存在)解决了这个问题。这是一些代码,可能有助于使用c ++和boost :: filesystem。希望有帮助。

#include <boost/filesystem.hpp>  
#include <iostream>
std::string str_target="C:\\folder1\\folder2\\img.jpg";

boost::filesystem::path path_target(str_target);
boost::filesystem::path path_folder=path_target.parent_path();//extract   folder
if(!boost::filesystem::exists(path_folder)) //create folder if it doesn't exist
{
  boost::filesystem::create_directory(path_folder);
}  
cv::imwrite(str_target,input_img);
Run Code Online (Sandbox Code Playgroud)