2012-07-03 103 views
1

我已經使用OpenCV 2.3.1和Android 2.2在位圖上查找輪廓,這似乎在三星Galaxy Ace上運行良好,但現在我需要移動這些輪廓的幫助。我的目標是在拖動到其他位置時使選定的輪廓跟隨用戶的手指。任何形式的幫助將不勝感激。在Android上移動輪廓

編輯: 我現在能夠移動基於用戶的觸摸輪廓,但隨後他們不停留在新的位置。所以,我認爲我需要從原始位置擦除圖像,並在新圖像上重新繪製圖像。此外,它只有移動的周圍輪廓,而不是輪廓內圖像的像素。我更關心圖像像素。我怎樣才能讓圖像像素移動到新位置?如果我能以某種方式獲得輪廓內像素的座標,這也會很棒。

對不起,我想上傳一張圖片,但似乎新成員無法在此階段上傳圖片。例如 - 我的輪廓圍繞粉紅線。當我拖動時,只有輪廓移動,線條的黑色像素根本不移動。有什麼方法可以讓粉紅色輪廓內的黑色像素移動?

另一個問題是,當我在一個像圓圈或正方形的封閉圖形上嘗試我的代碼時,我得到兩個輪廓。一個用於內部邊界,另一個用於外部邊界。但正如我之前所說,我對圖像像素更感興趣。請幫忙。

P.S. - 圖像可以是任何形狀。我剛剛採取了一條線的例子。

回答

1

首先,您必須將TouchListener/ClickListener(或別的東西,我不知道Android API)添加到您的位圖或畫布。

當用戶被觸摸屏幕(偵聽器被觸發)時,您必須識別用戶選擇了哪個輪廓。爲此使用pointPolygonTest功能。

關於運動:Contour只是Point個序列(vector),所以如果你想轉移(移動)一些輪廓,你必須做到以下幾點(C++代碼):

void moveContour(vector<Point>& contour, int dx, int dy) 
{ 
    for (size_t i=0; i<contour.size(); i++) 
    { 
     contour[i].x += dx; 
     contour[i].y += dy; 
    } 
} 

希望它有助於。

+0

感謝您的及時回覆。那麼,我嘗試了直到「pointPolygonTest」方法,它工作正常,所以現在我將繼續並實現運動輪廓的代碼。 –

+0

嘿阿斯特,你的代碼適用於移動輪廓。但是,我還需要移動由此輪廓包圍的圖像像素。圖像像素似乎不隨輪廓移動。有什麼我在這裏失蹤?也許一個例子會有所幫助,請查看修訂信息的問題。 –

+0

@AngadAdivrekar如果你已經接受了舊的問題,那麼你必須創建一個新的問題。不幸的是,我不明白你的新問題。 – ArtemStorozhuk