2013-02-11 1 views
0

Есть ли какой-либо интерфейс C++ opencv, который может выполнять ту же работу этих двух функций?cvSetImageData и cvCreateImage C++ эквивалентный интерфейс

Привет, я на самом деле, используя эти две функции таким образом

IplImage *image; 
ARUint8 *dataPtr; // unsigned chars, in format ARGB 
cv::Size size; 

//do stuff 

image = cvCreateImage(*size, IPL_DEPTH_8U, channels); 

cvSetImageData(image, dataPtr, size->width * channels); 

fitst один создает используется для инициализации пустой IplImage * образ, второй один, чтобы скопировать исходные данные из внешнего источника (dataPtr) к самому изображению.

Я знаю, что первый должен быть тривиальным, заменив IplImage con un cv :: Mat, проблема в том, что я не знаю, как передать параметр «IPL_DEPTH_8U» в конструктор.

Чтобы скопировать данные с интерфейсом C++, я понятия не имею, ...

PS: ARUint8 * DataPtr мой источник данных, я не могу иметь другой источник, но мне нужно, чтобы преобразовать его в OpenCV представление данных

Заранее спасибо!

ответ

1

Как вы и предполагали, на интерфейсе C++ вы делаете это через конструктор для cv::Mat. Вам нужно будет использовать соответствующий тип, соответствующий IPL_DEPTH_8U (возможно, CV_8U или CV_8UC3 в зависимости от того, сколько у вас каналов).

Один из конструктора перегрузок могут принимать необработанный указатель на существующие данные, так что вы могли бы сделать это следующим образом:

cv::Mat image(size, CV_8U, (void*)dataPtr); 

Заметит также, что резюме :: Mat конструктор может взять step аргумент, который необходимо, если ваши данные заполняются в конце строк или в любом другом более сложном формате.

Вы также можете просмотреть OpenCV documentation for Mat::Mat online для получения более подробной информации.

Смежные вопросы