0

我正在尝试使用 opencv 加载 .pbm 图像。

我正在使用 imread 功能;文档说它应该打开 pbm 文件,但我无法使其工作。

它确实适用于其他格式,如 png/jpeg/...

#define CV_LOAD_IMAGE_ANYDEPTH 2
#define CV_LOAD_IMAGE_ANYCOLOR 4
[...]
//argv[1] is the file's name
cv::Mat img = cv::imread(argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if (img.rows*img.cols==0){
    printf("\nImage not loaded");
    return 0;
}

..当然,对于 pbm 文件,它返回 0。

4

1 回答 1

1

如果您使用的是 OpenCV 3,则可以使用:

Mat img = imread("image.pbm",IMREAD_ANYCOLOR|IMREAD_ANYDEPTH);

如果您想排除您的起始图像损坏/不正确的可能性,您可以使用 ImageMagick 在命令行轻松创建测试图像,该图像安装在大多数 Linux 发行版上,可用于 OSX 和 Windows。

# Create P1 (ASCII/plain) PBM and P4 (binary/rawbits) PBM
convert -size 200x100 xc:white -bordercolor black -border 50 -compress none P1.pbm
convert -size 200x100 xc:white -bordercolor black -border 50 P4.pbm
于 2016-02-18T11:26:58.453 回答