Я создал OpenCV матрица:
CvMat * src = cvCreateMat(1, 2, CV_32FC2);
Затем я хочу настроить элемент row = 0, col = 1, channel = 1 В соответствии с примером в описании документация для CvMat Я попытался установить элемент со следующим кодом:
CV_MAT_ELEM(*src, float, 0, 1 * 2 + 1) = 123;
Но assert
запущен.
И причина очевидна:
У нас естьследующие определения в источниках OpenCV:
#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size ) \
(assert( (unsigned)(row) < (unsigned)(mat).rows && \
(unsigned)(col) < (unsigned)(mat).cols ), \
(mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))
#define CV_MAT_ELEM( mat, elemtype, row, col ) \
(*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))
В моем случае mat.cols == 2
и col == 1 * 2 + 1 == 3
.
Что не так: документация или утверждение в источниках OpenCV?
Как управлятьэто?
Как настроить элемент многоканальной матрицы?Спасибо.
PS Разработчикам OpenCV, если кто-нибудь здесь.
Когда я нажимаю "Вы можете создать его сейчас", чтобы создать новую учетную запись для сообщения об ошибке со страницы http://opencv.willowgarage.com/wiki/Welcome?action=login, Я получаю сообщение об ошибке.«Неизвестное действие newaccount.»
ОБНОВЛЕНИЕ:
Я использую OpenCV 2.1.