Как преобразовать вывод указателя этой оболочки C для MatExpr в OpenCV обратно в MatExpr

0

Вот моя C-оболочка для оператора OpenCV MatExpr "/"

MatExpr* cv_Mat_div_S(Mat* m1, int m2) {
        return new MatExpr(*m1 / m2);
    }

Я думаю, что я получил эту часть, где я конвертирую фрейм в указатель для использования в cv_Mat_div_S и использую ссылку на него в функции cv_Mat_div_S

 Mat mat(frame);
 cv_Mat_div_S(&mat, 255);

Но при попытке использовать вывод Cv_Mat_div_S в обычном C++ cvtColor, как показано ниже, я получаю длинную строку ошибок, причем этот вопрос наиболее важен:

error: нет соответствия для 'operator * (тип операнда -' cv :: Mat) cvtColor (* mat, * mat, CV_BGR2Luv);

Вот как я пытаюсь преобразовать обратно в MatExpr:

 cvtColor(*mat, *mat, CV_BGR2Luv);

Я попытался использовать & вместо *, но не пошел.

Я мог бы использовать помощь, конвертирующую вывод cv_Mat_div_S обратно в MatExpr для использования в других функциях C++ для тестирования... И если кто-то может заметить обертку cv_Mat_div_S и проверить, есть ли лучший способ ее написать, возможно, тот, который может принять более одного типа для параметра значения... но не с использованием шаблона, потому что я компилирую его в.so и его предполагается использовать в extern C {}

Теги:
opencv

1 ответ

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

Объявление cvtColor() является

void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 );

MatExpr может быть неявно преобразован в _InputArray. Но MatExpr не может быть преобразован в _OutputArray неявно. (см. исходный код _InputArray и _OutputArray для более)

Я пробую фрагмент тестового кода:

Mat a0;
MatExpr a(a0);
cvtColor(*(&a), *(&a), COLOR_GRAY2BGR);

VS2012 имеет ошибку компилятора:

error C2664: 'cv::cvtColor' : cannot convert parameter 2 from 'cv::MatExpr' to 'cv::OutputArray '

Поэтому вам нужно указать допустимый OutputArray (например, Mat вместо MatExpr), чтобы сохранить преобразованное изображение Luv.

  • 0
    Спасибо * (& а) это то, что мне было нужно ... вы очень добры :)

Ещё вопросы

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