#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
int main( int argc, char** argv )
{
const char* imageName = "samp.png";
Mat image;
image = imread( imageName, 1 );
Mat gray_image;
cvtColor( image, gray_image, CV_BGR2GRAY );
imwrite( "/home/Downloads/Pictures/Gray_Image.jpg",gray_image );
namedWindow( imageName, CV_WINDOW_AUTOSIZE );
namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
waitKey(0);
return 0;
}
上面代码中的“imwrite”不创建图像。其他一切正常,我可以使用 imshow 看到图像。但我不知道为什么它不创建图像。我试过“convertTo”并替换“/' 到路径中的 '\',但它不起作用。如果我能得到任何线索,我将很高兴。谢谢!
最佳答案
这没有清楚地记录下来,但是 imwrite
返回一个 bool 值,当且仅当它认为它可以成功写入文件时才为 true
。您应该检查该值!
您可能会发现 imwrite
返回 false
。很可能您没有足够的权限,或者——正如 berak 指出的那样——您的文件路径无效。
顺便说一句,为了正确处理错误,您还应该捕获异常,特别是在用户提供输出文件 URL 的情况下。如果 OpenCV 由于某种原因找不到合适的编码器(即它无法识别您要编写的文件类型),它会抛出异常。
关于c++ - imwrite 不创建图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624995/