C++ 无法使用 Opencv 打开 pbm 文件
C++ Can't open pbm files with Opencv
我正在尝试使用 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 文件,它 returns 0.
如果您使用的是 OpenCV 3,您可以使用:
Mat img = imread("image.pbm",IMREAD_ANYCOLOR|IMREAD_ANYDEPTH);
如果您想排除起始图像是 corrupt/incorrect 的可能性,您可以使用 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
我正在尝试使用 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 文件,它 returns 0.
如果您使用的是 OpenCV 3,您可以使用:
Mat img = imread("image.pbm",IMREAD_ANYCOLOR|IMREAD_ANYDEPTH);
如果您想排除起始图像是 corrupt/incorrect 的可能性,您可以使用 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