2013-07-26 6 views
1

Я использую remap функции OpenCV, как показано ниже:Использование ReMap функции OpenCV 2.3.1

Mat lg,lr; 
Mat *mxl = (Mat *) cvLoad("mx1.xml"); 
Mat *myl = (Mat *) cvLoad("my1.xml"); 
remap(lg, lr, mxl, myl); 

mx1 и my1 загружаются как cv::Mat, но remap потребности cv::_InputArray, как достичь этого?

ответ

2

cv::_InputArray - это прокси-тип, используемый OpenCV для приема нескольких типов данных (например, cv::Mat или std::vector). Вам не нужно создавать его напрямую.

Часть вашей проблемы заключается в том, что вы пытаетесь смешивать C и C++ API. Это не рекомендуется. Другим фактором является то, что cv::Mat* не могут быть преобразованы в InputArray. Вы можете использовать cv::FileStorage для чтения файлов в cv::Mat объектов:

cv::Mat lg, lr; 
cv::FileStorage fs1("mx1.xml", cv::FileStorage::READ); 
cv::FileStorage fs2("mx2.xml", cv::FileStorage::READ); 

cv::Mat mxl; 
cv::FileNode fn = fs1.getFirstTopLevelNode(); 
fn >> mxl; 

cv::Mat myl; 
fn = fs2.getTopLevelNode(); 
fn >> myl; 

cv::remap(lg, lr, mxl, myl, CV_INTER_LINEAR); 
+0

Использование OpenCV 2.4.8 - getTopLevelNode, кажется, был переименован в getFirstTopLevelNode. – Kozuch

Смежные вопросы