无法在OpenCV中使用imwrite写入灰度图像



我尝试将RGB图像转换为灰度,转换成功,我可以用imshow显示它。但是,我不能用imwrite来写,imwrite函数返回NULL。我的原始图像是1920*1080 JPEG文件和UINT8。这是代码

#include <opencvcv.h>
#include <opencvhighgui.h>
using namespace cv;
int main(int argc, char** argv)
{
char* imageName = argv[1];
Mat image;
image = imread(imageName, 1);
if (argc != 2 || !image.data)
{
    printf(" No image data n ");
    return -1;
}
Mat gray_image;
cvtColor(image, gray_image, CV_BGR2GRAY);
if (imwrite("../../images/Gray_Image.jpg", gray_image) ==NULL) {
    printf( "Writing image is not successfull!");       
}
namedWindow(imageName, CV_WINDOW_AUTOSIZE);
namedWindow("Gray image", CV_WINDOW_AUTOSIZE);
imshow(imageName, image);
imshow("Gray image", gray_image);
waitKey(0);
return 0;
}

为什么imwrite返回NULL?

#include指令支持正斜杠。为了便于携带,请使用斜杠。为了理智。

在Windows中,文件处理功能通常不支持正斜杠。在那里使用后斜杠。或者,最好使用一些路径处理类(此类类通常支持正斜杠,因为它们需要是可移植的,并在Windows中自动转换为后斜杠(。

简而言之,

  • /&rar;来解决眼前的问题

也就是说,OpenCV imwrite可能不支持自动创建文件夹,所以您最好确保…

  • 指定的文件夹存在,并且

  • 对于相对路径(正如您所拥有的(,程序执行的当前文件夹是您想象的相对路径开始的位置。

相关内容

  • 没有找到相关文章

最新更新