我尝试使用以下代码获取反向透视图以实时捕捉到相机平面的帧:
Mat dst;
dst=dst.zeros(frame.cols,frame.rows,frame.type());
if(Found){
Mat mmat;
mmat.create(3,3,CV_32FC1);
mmat=getPerspectiveTransform(templPoints,imgPoints);
cout<< mmat<<endl<<endl;
warpPerspective(frame,dst,Homo,dst.size(),INTER_LINEAR );
imshow("out",dst);
}
问题是dst图片是全黑的,我的代码出了什么问题?
答案 0 :(得分:3)
您看到的图像通常是以错误的顺序将源点发送到getPerspectiveTransform
的结果。这意味着这些点彼此交叉并且将出现三角形形状。检查点的顺序,确保它们与目标点的顺序一致。
答案 1 :(得分:1)
您需要提供更多详细信息。 你为什么要同时调用findHomography和getPerspectiveTransform?由于你同时调用两者,我假设templPoints和imgPoints都是4,在这种情况下,对findHomography的调用是多余的(RANSAC对你没有任何作用)。
您是否在mmat * templPoints的值上查看(例如使用matlab或八度音程,或手动)?它们应该等于imgPoints,并且都在[0,dst.width] x [0,dst.height]
内