Ten en cuenta que en la informática un problema casi siempre tiene diferentes soluciones, de igual modo aquí te compartimos la mejor y más eficiente.
Solución:
OpenCV tiene problemas para guardar en JPG
imágenes a veces, intente guardar en BMP
en lugar de:
cv::imwrite("/Users/nickporter/Desktop/Gray_Image.bmp", cvImage);
Además, antes de esto, asegúrese de que la imagen cvImage
es válida. Puedes comprobarlo mostrando primero la imagen:
namedWindow("image", WINDOW_AUTOSIZE);
imshow("image", cvImage);
waitKey(30);
Encontré el mismo problema y una posible razón es que la carpeta de destino para colocar su imagen. Supongamos que desea copiar A.jpg a la carpeta "C:\folder1\folder2\"
pero de hecho cuando folder2
no existe, la copia no puede tener éxito (es de mi prueba real, no del anuncio oficial). Y resolví este problema al verificar si la carpeta existe y crear una carpeta si no existe. Aquí hay un código que puede ayudar a usar c ++ y boost::filesystem. Que ayude
#include
#include
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);
También sugiero verificar los permisos de la carpeta. Opencv regresa silenciosamente de imwrite sin ninguna excepción, incluso si la carpeta de salida no tiene permisos de escritura.
Si aceptas, tienes la habilidad dejar un post acerca de qué te ha parecido este enunciado.