Я получаю сообщение об ошибке в C ++ - ошибка: невозможно преобразовать 'cv :: Point_ <int>' в 'cv :: Point * {aka cv :: Point_ <int> *}' взамен

0

Я пытаюсь запустить код ниже, и я получаю сообщение об ошибке. Я создаю оболочку для функции OpenCV под названием "Mat :: at", и я пытаюсь ее скомпилировать в ".so" на Ubuntu Trusty, используя "G++". Я перечислил содержимое моего файла ".cpp" my ".hpp" с моей ошибкой и моей командой компиляции ниже. Я был бы признателен за любую помощь в возвращении этой функции C++ OpenCV в качестве указателя C. Потому что это моя цель. Спасибо.

Ошибка:

 error: cannot convert ‘cv::Point_<int> to ‘cv::Point* 
    {aka cv::Point_<int>*} in return
 return self->at<Point>(row, col); 

(Я также получаю нормальный "Contol доходит до конца ошибки невоичной функции")

Cpp:

 Point* cv_Mat_at_Point(Mat* self, int row, int col) {
   return self->at<Point>(row, col);
 }

Hpp:

 Point* cv_Mat_at_Point(Mat* self, int row, int col)

Команда компиляции:

 g++ -Wall -shared -fPIC -o c-binding.so c-binding.cpp

Изменить для RedX:

Point* cv_create_Point(int x, int y) {
    return new Point(x, y);
}
  • 0
    self->at() возвращает Point не Point*
  • 0
    Чтобы быть точным, согласно документации, он возвращает Point& ( docs.opencv.org/modules/core/doc/basic_structures.html#mat-at ).
Показать ещё 5 комментариев
Теги:
opencv
wrapper

1 ответ

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

он должен быть return &self->at<Point>(row, col);

так как функция ожидает Point *

Ещё вопросы

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