преобразование объекта Mat в double arr (OpenCV)

0

Я хочу представить anistropic диффузию на объект Mat в opencv. Анистропик реализован в C и принимает следующее:

applyFilter(double* I, Size sz, double theta, double scale, double eta)

Я искал в документации и в Интернете, но havent нашел достаточный ответ, как преобразовать объект Mat в double[][], поэтому я могу запустить его через функцию.

С Уважением,

Теги:
opencv
type-conversion

1 ответ

1
Лучший ответ

вам нужно будет проверить свой Мат на 2 условия:

  • m.type() == CV_64FC1; //1channel double
  • m.isContinuous() == true; // не дополнен или не roi

то вы можете безопасно использовать:

double *I = m.ptr<double>(0); // ptr to 1st row/element
  • 0
    Эй, я попробовал следующее, и он принимает эту функцию, хотя, когда я пытаюсь преобразовать двойное обратно в мат, я получаю пустую белую страницу, есть идеи? Я пробовал и Mat (строки, столбцы, CV_64FC1, I) и копирование данных вручную с помощью цикла for.
  • 0
    вам, возможно, придется масштабировать значения обратно до диапазона [0..1]. попробуй: imshow("lala", I * 1.0/255); // или какой-то другой фактор. может даже нормализовать () это.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню