Необходимо отслеживать типы OpenCV Mats - PullRequest
0 голосов
/ 16 июля 2010

Итак, я использую класс Mat из opencv в программе, которую я пишу. Mat выглядит примерно так:

class Mat {
    public:
        Mat(int width, int height, int type);
        template <typename T> T getElt(int x, int y);
        int depth();
        ...
}

Тип в конструкторе указывает, являются ли элементы в Mat float s, int s и т. Д., А также количество каналов в изображении. depth() возвращает тип данных, используемый для хранения элементов изображения.

К сожалению, мне нужно позвонить getElt() в моем коде. Всякий раз, когда я делаю это, я использую оператор switch, чтобы проверить глубину Mat, чтобы я мог вызвать getElt() с соответствующим параметром шаблона. Делать это таким образом довольно многословно, поэтому мне было интересно, есть ли лучший способ сделать это. Могу ли я создать контейнер для Mat и с помощью магии шаблона создать метод, который возвращает тип, а не значение? Или я мог бы использовать макросы, чтобы сделать вещи более эффективными и логичными?

Я бы предпочел не иметь подкласса Mat, поскольку есть несколько методов, кроме getElt(), для которых у меня есть такая же проблема.

Редактировать: уточнение описания.

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Вы, вероятно, ищете вместо Mat_<T>.Черно-белое изображение на самом деле не то же самое, что черно-белое изображение, и ни одно из них не равно цветному изображению.Они должны быть отдельными во время компиляции.

0 голосов
/ 16 июля 2010

IIRC «тип» в openCV MAT соответствует типу изображения (то есть количеству каналов), а не типу данных float / int / char и т. Д.

Если вам нужен шаблонный класс изображений, который может прозрачно работать с char / int / bool / double и т. Д. - взгляните на CImg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...