Возвращаемый тип атрибута типа CvMat - 1111638021 вместо 5 или 6..ошибка указателя? - PullRequest
3 голосов
/ 18 апреля 2011

У меня действительно странная ошибка, возможно, это ошибка указателя, но я ее не вижу. У меня есть следующий код ...

// file scope
static CvMat *cam1_points;
const int n_boards = 2;
const int board_n = 54;

// snip

// function scope...
void initializeAndDoStuff()
{
    cam1_points = cvCreateMat(n_boards*board_n, 2, CV_32FC1);
    printf("Type: %d\n", cam1_points->type); // should be 5.  returns crazy number in title.
};

Что-то идет не так? Почему я не получаю правильный ответ? Тип должен возвращать CV_32F, что соответствует целому числу 5.

1 Ответ

2 голосов
/ 18 апреля 2011

type - это сигнатура матрицы, которая хранит больше, чем тип функции.Вы получаете «странное» число, потому что оно является результатом следующих побитовых операций ИЛИ.

CV_MAT_MAGIC_VAL|5|CV_MAT_CONT_FLAG

Итак, вот как вы можете использовать type, чтобы проверить, принадлежит ли ваша матрица определенному типу,или является непрерывным и т. д.

Обратите внимание, что если вы используете версию C ++ (cv::Mat), то type вернет 5.

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