我想採取的仿射矩陣,我從OpenCV的有:轉換的OpenCV的仿射矩陣CGAffineTransform
Mat T = getAffineTransform(src_pt, dst_pt);
,然後將其轉換成CGAffineTransform在覈芯顯卡/的Objective-C/iOS版應用。 (CGAffineTransform docs)
我已經試過:
CGAffineTransform t = CGAffineTransformIdentity;
t.a = T.at<float>(0,0);
t.b = T.at<float>(0,1);
t.c = T.at<float>(1,0);
t.d = T.at<float>(1,1);
t.tx = T.at<float>(0,2);
t.ty = T.at<float>(1,2);
這工作正常,x和y的翻譯,但如果沒有在矩陣中的任何旋轉。由於產生的圖像看起來奇怪地偏斜,似乎缺少某些東西。我試着乘以.b
和.c
乘以-1和切換.b
和.c
,但這兩者似乎都不起作用。圖像仍然出現不正確的傾斜。
編輯:我應該提及它的差不多正確旋轉。當我切換b和c時,它至少在正確的方向旋轉。它似乎有點偏離,因爲旋轉得有點過分。
我很驚訝切換'B'和'C'沒有工作,因爲這會導致正確的旋轉。您發佈的代碼目前構建了不正確的輪換。 – Aurelius
是的,我試過't.b = T.at(1,0)'和't.c = T.at (0,1)'但沒有運氣。我認爲這可能與原點有關。 –
taber