2015-05-25 10 views
5

W opencv2.4.10, którego użyłem wcześniej, konwersję z CvMat * na cv :: Mat można wykonać jak poniżej.Jak przekonwertować CvMat * na cv :: Mat w OpenCV3.0

CvMat *src = ...; 
cv::Mat dst; 
dst = cv::Mat(src); 

Jednak w wersji opencv3.0 rc1 nie można konwertować w ten sposób. W przypadku niektórych witryn konwersja może zostać przeprowadzona jak poniżej.

CvMat* src = ...; 
cv::Mat dst; 
dst = cv::Mat(src->rows, src->cols, src->type, src->data.*); 

Jeśli typ src ma wartość "float", ostatnim argumentem jest "src-> data.fl".

Dlaczego konstruktor cv :: Mat jest zmniejszany? A może są jakieś metody konwersji z CvMat * na cv :: Mat?

Odpowiedz

7

CvMat * macierz

Mat m0 = cvarrToMat (Matrix).

opencv dostarczył tę funkcję zamiast macie (macierz).

Uwaga: W opencv 3.0 zawinięto wszystkie konstruktory, które konwertują stare style (cvmat, IPLImage) na maty w nowym stylu do tej funkcji.

+0

Notatka jest bardzo pomocna, po prostu zredagowałem ją, by stać teraz nieco dalej. – JTIM

1

W celu przekształcenia CvMat* do Mat trzeba zrobić tak:

cv::Mat dst(src->rows, src->cols, CV_64FC1, src->data.fl); 
Powiązane problemy