簡體   English   中英

無法在OpenCV中使用imwrite編寫灰度圖像

[英]Unable to write Grayscale image with imwrite in OpenCV

我試圖將RGB圖像轉換為灰度,轉換成功,我可以用imshow顯示它。 然而,我不能用imwrite寫它,imwrite函數返回NULL。 我的原始圖像是帶有UINT8的1920 * 1080 JPEG文件。 這是代碼

#include <opencv\cv.h>
#include <opencv\highgui.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中自動轉換為反斜杠)。

簡而言之,

  • /\\來解決眼前的問題。

也就是說,OpenCV imwrite可能不支持自動創建文件夾,所以你最好確保......

  • 指定的文件夾存在,和

  • 對於相對路徑(如您所知),程序執行的當前文件夾是您想象的相對路徑的起始位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM