как преобразовать многомерный массив С++ в форму openCV?

Возможный дубликат:
копировать данные из одной матрицы к другому

У меня есть такой массив в С++:

double myValue[600][800][3];

и я хочу преобразовать его в многомерную матрицу openCV или скалярную форму. Я попытался сделать что-то вроде этого:

double size[] = {600, 800};
cv::Mat myValue (size, 3, CV_8UC3 );

Но это неправильно, может кто-нибудь мне помочь?


person E_learner    schedule 06.10.2012    source источник
comment
Я пробовал cv::Mat myMat (size, 3, CV_8U3C ). Но это неправильно - А? Может быть, потому что эта строка даже не содержит какой-либо ссылки на myValue? Каким образом это должно магическим образом быть связано с myValue? Пожалуйста, не говорите, что он просто отказывается компилироваться, потому что вы использовали CV_8U3C вместо CV_8UC3.   -  person Christian Rau    schedule 06.10.2012
comment
извините, моя опечатка, это myValue, а не myMat, а CV_8UC3. Я отредактировал его.   -  person E_learner    schedule 06.10.2012
comment
Хм? Теперь имена обоих объектов мешают, и объявление cv::Mat по-прежнему никак не ссылается на массив double, как он должен принимать его значения?   -  person Christian Rau    schedule 06.10.2012
comment
В StackOverflow нельзя публиковать один и тот же вопрос дважды!   -  person Sam    schedule 06.10.2012
comment
@Christian: пожалуйста, забудьте его значения, я могу объявить его нулевой матрицей, если хотите. Я хочу спросить, как объявить многомерный мат opencv.   -  person E_learner    schedule 06.10.2012
comment
@vasile: да, я знаю, но я не вижу, чтобы эти два вопроса были похожи. что я пропустил здесь?   -  person E_learner    schedule 06.10.2012
comment
хорошо, я думаю, что нашел что-то полезное здесь, в этом посте: stackoverflow.com/questions/9668951/   -  person E_learner    schedule 06.10.2012
comment
@vasile: я понял, что ты имеешь в виду. не могли бы вы помочь мне удалить этот вопрос сейчас? большое спасибо.   -  person E_learner    schedule 06.10.2012


Ответы (1)


Приятель, вы должны провести базовое исследование, просмотрев руководство или поискав в Интернете, прежде чем задавать вопрос. Если вы этого не сделаете, нам будет очень сложно дать вам понятный ответ.

Доступ к элементам cv::Mat или матричного преобразования — это действительно базовые вещи в OpenCV. Пожалуйста, обратитесь к шпаргалке, если вы так заняты.

Чтобы ответить на ваш вопрос, я не думаю, что есть короткий путь для преобразования многомерного массива в Mat. Вы должны перебрать элементы, чтобы скопировать данные в Mat. Вот почему многие люди используют одномерный массив для ускорения обработки изображений.

person Tae-Sung Shin    schedule 06.10.2012
comment
да, я уже много искал, прежде чем задать этот вопрос. И из Интернета я обнаружил, что в opencv есть некоторые функции, такие как cvSplit или cvMixChannels и т. д. Поэтому я подумал, что могут быть другие функции/более быстрый способ сделать такое преобразование между многомерным массивом в cvMat, и задал этот вопрос здесь. В любом случае, спасибо за ваше предложение. - person E_learner; 07.10.2012