假设我有一个源图像,而不是使用 getPerspectiveTransform 和 cv::warpPerspective 转换为 dst 图像。之后我的源图像中有特殊的点向量,我想在我的 dst 图像中获取或绘制它们,我认为这很明显,但我没有这样做,以更好地解释我遇到的问题带有棋盘的样本:
.................................
transformationMatrix= cv::getPerspectiveTransform(src_Point, quad_pts);
cv::warpPerspective(src, dst, transformationMatrix, dst.size()/,CV_INTER_LINEAR,cv::BORDER_ISOLATED);
这项工作很好,所以现在我改变了我的 src 框架的视角。转换我的点,然后把它们放在 dst 我写了这个小函数
std::vector<cv::Point2f> warpStuff(std::vector<cv::Point2f> inputVector , cv::Mat transformationMatrix){
cv::Matx33f warp = transformationMatrix;
cv::Point3f homogenous;
std::vector<cv::Point2f> result;
for (int k =0; k < inputVector.size()-1; k++ ){
homogenous = warp* inputVector[k];
result.push_back(cv::Point2f(homogenous.x,homogenous.y));
}
return result;
}
当尝试在 dst 中绘制结果向量时,我没有得到它们位置的点?
这是我的源图片
在转换之后,当在这里绘制结果时,我得到的是:
我认为问题在于 cv::warpPerspective 除了使用变换矩阵之外还使用了 dst 图像的大小,我试图调试这些东西,但我真的不明白它对这个大小有什么作用,所以我可以添加这个到我的功能!
有什么建议吗?