Я могу создать и распечатать такую матрицу:
Mat M(2,2, CV_8UC3, Scalar(0,0,255));
cout << "M = " << endl << " " << M << endl << endl;
Моя оболочка C для функций C++ такова:
Mat* cv_printmat(Mat* mat) {
return cout << "Matrix = " << endl << " " << *mat << endl << endl;
}
Не уверен, куда идти отсюда... Мне нужно объявить "Mat * mat", как... непрозрачный указатель для моей цели... но получить эту ошибку
In file included from /usr/include/c++/4.8/ios:44:0,
from /usr/include/c++/4.8/istream:38,
from /usr/include/c++/4.8/sstream:38,
from /usr/include/c++/4.8/complex:45,
from /usr/local/include/opencv2/core/cvstd.inl.hpp:48,
from /usr/local/include/opencv2/core.hpp:1256,
from /usr/local/include/opencv2/opencv.hpp:46,
from opencv_generated.hpp:1,
from cl-opencv-glue.cpp:1:
/usr/include/c++/4.8/bits/basic_ios.h:115:7: note:
candidate is: std::basic_ios<_CharT, _Traits>::operator
void*() const [with _CharT = char; _Traits = std::
char_traits<char>] <near match>
operator void*() const
^
/usr/include/c++/4.8/bits/basic_ios.h:115:7: note:
no known conversion for implicit ‘this parameter from ‘void* to ‘cv::Mat*
компиляция с помощью этого:
g++ -Wall -shared -fPIC -o libcl-opencv-glue.so cl-opencv-glue.cpp
любая помощь очень ценится =).
Изменить... новая ошибка
opencv-glue.cpp :150:58 error:invalid user-defined conversion from
‘std::basic_ostream<char>::__ostream_type {aka std
::basic_ostream<char>} to ‘cv::Mat* [-fpermissive]
return cout << "M = " << endl << " " << *mat << endl << endl;
^
In file included from /usr/include/c++/4.8/ios:44:0,
from /usr/include/c++/4.8/istream:38,
from /usr/include/c++/4.8/sstream:38,
from /usr/include/c++/4.8/complex:45,
from /usr/local/include/opencv2/core/cvstd.inl.hpp:48,
from /usr/local/include/opencv2/core.hpp:1256,
from /usr/local/include/opencv2/opencv.hpp:46,
from opencv_generated.hpp:1,
from opencv-glue.cpp:1:
/usr/include/c++/4.8/bits/basic_ios.h:115:7: note: candidate is:
std::basic_ios<_CharT, _Traits>::operator void*() const [with _
CharT = char; _Traits = std::char_traits<char>] <near match>
operator void*() const
^
/usr/include/c++/4.8/bits/basic_ios.h:115:7: note:
no known conversion for implicit ‘this parameter from
‘void* to ‘cv::Mat*
Тип возвращаемых данных - cv :: Mat *, тогда как тип возвращаемых данных для std :: cout равен void *. Не знаете, какова ваша цель, но это должно компилироваться, если вы просто пытаетесь распечатать.
void cv_printmat(Mat* mat) {
cout << "Matrix = " << endl << " " << *mat << endl << endl;
}
int main(int argc, char* argv[]){
cv::Mat M(2,2, CV_8UC3, cv::Scalar(0,0,255));
cv_printmat(&M);
}