Как «обрезать» матрицу, сохраняя выравнивание байтов? - PullRequest
1 голос
/ 07 сентября 2011

Допустим, у меня есть матрица A 100x100, и я хочу получить еще одну матрицу B 100x50, содержащую только 50 первых столбцов A. Самый простой способ - использовать cvGetSubRect, но это не копирует значения, а просто дает мне заголовок, указывающий на данные A, и «пропускает» ненужные столбцы, хотя для моего приложения важно, чтобы данные в B могут считываться непрерывно.

Какой самый элегантный способ сделать это в OpenCV? Я не против скопировать данные из А в Б, но я предполагаю, что для этого есть специальная функция?

спасибо

1 Ответ

2 голосов
/ 07 сентября 2011

Используйте Mat::copyTo(), чтобы сделать полную копию. При необходимости (например, если форма неправильная), это перераспределит данные для целевой матрицы.

Поскольку вопрос на самом деле помечен буквой "c", для полноты отметим, что функция копирования C-API - cvCopy().

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