MacでOpenCVから画像を保存しようとしていて、以下のコードを使用していますが、今のところうまくいっていません。
cv::imwrite("/Users/nickporter/Desktop/Gray_Image.jpg", cvImage);
なぜこれが保存されないのか、どなたかおわかりになりますか?
OpenCV は,時々 JPG
形式の画像に保存する際に問題が発生します.
cv::imwrite("/Users/nickporter/Desktop/Gray_Image.bmp", cvImage);
また、その前に、画像 cvImage
が有効であることを確認してください。まず、画像を表示することで確認できます。
namedWindow("image", WINDOW_AUTOSIZE);
imshow("image", cvImage);
waitKey(30);
私も同じ問題に遭遇しましたが、考えられる理由の1つは、画像を配置するターゲットフォルダです。例えば、A.jpgを"C:³³³³³³³にコピーしたいのですが、実は
folder2`が存在しないとコピーに成功しません(公式発表ではなく、私の実際のテストによるものです)。そこで、フォルダが存在するかどうかを確認し、存在しない場合はフォルダを1つ作成することでこの問題を解決しました。 以下は、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);
私もちょうど同じような問題を抱えていて、jpgで読み込み、jpgで保存し直そうとしています。このコードを追加して、今は大丈夫なようです。
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
そして、書き込みファイルにparamを含める必要があります。
cv::imwrite("/Users/nickporter/Desktop/Gray_Image.jpg", cvImage, compression_params);