Как да c.v.

Нашите първоначални данни: Универсален контейнер cv::Mat от библиотеката openCV, в който нямаме търпение да поставим обикновено RGB изображение. RGB изображението идва при нас от функции на трети страни, които връщат данни като отделни неподписани символни масиви за всеки от цветовете на канала.

В оригиналния пример това е масив от PixelRGB елементи от PCL библиотеката, където на всеки елемент е присвоена проста структура, съдържаща стойностите на всички цветови канали:

В контейнера cv::Mat всички данни се съхраняват в едномерен масив под формата на последователни характеристики на всяка точка. Тоест, за нашия 3D случай изглежда така: [bgr-1][bgr-2]…[bgr-n] където [bgr-1] е характеристиката съответно на синия, зеления и червения цвят на първия пиксел. Редът, в който се съхраняват данните, е важен – т.е. grb или rgb няма да работи, в OpenCV цветните данни се съхраняват в този ред - BGR - синьо, зелено, червено.

Свойствата на cv::Mat - редове и колони - говорят сами за себе си - съответно броя на редовете и колоните. cv::Mat.step е броят на елементите на масива във всеки ред. За триизмерния случай дължината на една линия е 640 * 3 = 1920.

Кодов фрагмент за попълване на контейнера cv::Mat с масив от unsigned char:

връзката описва как да извършите обратната операция - копиране на данни от контейнера Mat: http://jayrambhia.wordpress.com/2012/06/23/get-data-from-mat-cvmat-in-opencv/

Как да пакетирате RGB данни от unsigned char в unsigned int:

Как да разархивирате RGB данни от unsigned int в unsigned char: