说我有源图像,而不是使用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图像的大小,我试着调试这些东西,但我真的不明白它用这个大小做什么所以我可以添加到我的功能!
有什么建议吗?