2015-05-25 80 views
5

在我之前使用的opencv2.4.10中,從CvMat *到cv :: Mat的轉換可以按如下方式完成。如何在OpenCV3.0中將CvMat *轉換爲cv :: Mat

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

但是,在opencv3.0中rc1不能這樣轉換。 在某些網站,這種轉換可以按照以下方式完成。

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

如果src的類型是'float',那麼最後一個參數是'src-> data.fl'。

爲什麼cv :: Mat的構造函數減少了? 還是有一些關於從CvMat *轉換爲cv :: Mat的方法嗎?

回答

7

*與CvMat矩陣

墊M0 = cvarrToMat(矩陣)。

opencv提供了這個函數,而不是Mat(矩陣)。

注意:在opencv 3.0中,它們包裝了將舊式結構(cvmat,IPLImage)轉換爲新樣式Mat的所有構造函數。

+0

該說明非常有幫助,我剛剛編輯它現在有點多了。 – JTIM

1

爲了轉換CvMat*Mat你必須這樣做:

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