2016-03-14 4 views
0

Я пытаюсь скопировать данные объекта OpenCV мата (его типа Uchar *) в неподписанный символ *, используя функцию копирования C++ следующим образом:Попытка копирования данных резюме :: Mat в Uchar *

cv::Mat m = cv::imread (path, 0); 

uchar * ptr; 

std::copy (m.data, ptr, mask.size); 

Однако im получает 26 синтаксических ошибок относительно функции копирования. ты можешь помочь мне с этим? Помощь приветствуется. Спасибо.

+0

Вы пытаетесь скопировать данные всего мата в один указатель? И, как вы думаете, 'mask.size' даст вам? вы проверили? – Derman

+0

Вы перепутали много вещей здесь. 1) неинициализированный указатель 2) Неверные аргументы в 'std :: copy'. Вы хотели использовать вместо этого 'memcpy'? 3) Что такое 'маска'? Если вы собираетесь работать с не непрерывными изображениями, вам действительно нужно по-другому. Итак, что вы пытаетесь сделать? И зачем вам «учитель»? И зачем вам нужно копировать данные в 'uchar'? – Miki

+0

Маска Derman и Miki должна была быть «m». Вместо этого выделена память m.total(). m.size возвращает объект размера с шириной и высотой. Таким образом, вы были правы, когда вы зашли на использование копии. Вместо этого я использовал memcpy, так что теперь все в порядке. Спасибо! – dramaticlook

ответ

1

Просто ответ:

uchar* mPtr = new uchar [m.total()]; 

Memcpy (mPtr, m.data, m.total()); 

Это был простой вопрос, извините. хотя надеюсь, что это тоже поможет кому-то.

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