C++ Не могу открыть файлы pbm с Opencv
Я пытаюсь загрузить изображение.pbm с помощью opencv.
Я использую функцию 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.
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