使用重映射功能opencv 2.3.1

时间:2013-07-26 07:05:19

标签: opencv image-processing

我正在使用OpenCV的remap函数,如下所示:

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

mx1my1加载为cv::Mat,但remap需要cv::_InputArray,我该如何实现?

1 个答案:

答案 0 :(得分: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);