1

I am using OpenCV's remap function as shown below:

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

mx1 and my1 are loaded as cv::Mat, but remap needs cv::_InputArray, how do I achieve this?

4

1 回答 1

2

cv::_InputArray是 OpenCV 用来接受多种数据类型(如cv::Matstd::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);
于 2013-07-26T16:36:30.413 回答