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
Другие вопросы по тегам