我有一个cv::Mat
我想转换成cv::Matx33f
。我尝试这样做:
cv::Mat m;
cv::Matx33f m33;
.........
m33 = m;
但所有数据都会丢失!知道如何做到这一点吗?
UPDATE这是导致我的问题的代码的一部分:
cv::Point2f Order::warpPoint(cv::Point2f pTmp){
cv::Matx33f warp = this->getTransMatrix() ; // the getter gives a cv::Mat back
transformMatrix.copyTo(warp); // because the first method didn't work, I tried to use the copyto function
// and the last try was
warp = cv::Matx33f(transformationMatrix); // and waro still 0
cv::Point3f warpPoint = cv::Matx33f(transformMatrix)*pTmp;
cv::Point2f result(warpPoint.x, warpPoint.y);
return result;
}
要从 Mat 转换为 Matx,可以使用数据指针。例如,
cv::Mat m; // assume we know it is CV_32F type, and its size is 3x3
cv::Matx33f m33((float*)m.ptr());
假设连续内存以 m 为单位,这应该可以完成工作。您可以通过以下方式检查:
std::cout << "m " << m << std::endl;
std::cout << "m33 " << m33 << std::endl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)