2012-06-04 42 views
1

我試圖讓逆透視獲得實時捕獲到用下面的代碼照相機平面中的框架:warpPerspective

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圖像是完全的黑色,我的代碼有什麼問題?

enter image description here

回答

3

您看到的圖像通常是以錯誤順序將源點發送到getPerspectiveTransform的結果。這意味着這些點相互交叉,並出現三角形形狀。檢查點的順序並確保它們與目標點的順序相匹配。

1

您需要提供一些更多的細節。 你爲什麼要調用findHomography和getPerspectiveTransform?既然你在調用兩者,我認爲templPoints和imgPoints的大小都是4,在這種情況下findHomography的調用是多餘的(而RANSAC對你沒有任何作用)。

你看過(例如,使用matlab或八度,或手工)在mmat * templPoints的值嗎?它們應該等於imgPoints,並且全部位於[0,dst.width] x [0,dst.height]內

相關問題