Я пытаюсь запустить код ниже, и я получаю сообщение об ошибке. Я создаю оболочку для функции 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);
}
он должен быть return &self->at<Point>(row, col);
так как функция ожидает Point *
self->at()
возвращаетPoint
неPoint*
Point&
( docs.opencv.org/modules/core/doc/basic_structures.html#mat-at ).