我正在使用OpenCV的remap
函数,如下所示:
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
,我该如何实现?
答案 0 :(得分: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);