我想識別等,其是在screen.My主要目的繪製的圓形,三角形和矩形的形狀是一個用戶繪製在屏幕上的形狀,並且我需要一個代碼來識別此shape.How應該怎麼解決這個問題?的Android形狀識別在屏幕上
0
A
回答
0
你應該看看GestureOverlayView。 一個好的教程:http://www.vogella.com/articles/AndroidGestures/article.html
1
你正在嘗試實現可以說是相當棘手,但我碰巧來實現類似的東西在不久前,這裏是我使用的方法:
- 棒黑色&白色圖紙
- 有一個固定分辨率的小型數據庫(黑色&白色)圖形(50左右),比如說256x256(如果您願意,可以將它們作爲二進制斑點存儲在sqlite中)。確保你爲這些圖畫使用了粗線條(10px應該沒問題,或者是用戶輸入圖紙厚度的兩倍)。此外,圖紙應該正常化,這意味着它們的尺寸至少必須與圖像本身一樣大。
- 提取由用戶和進程繪製的形狀它:
一個),如果它具有的縱橫比接近於正方形,然後簡單地裁剪它周圍的空白和放大,使得其具有相同的大小作爲你的數據庫圖像
b)否則,它將最有可能有一個尺寸大約兩倍大於另一個,在這種情況下,你裁剪白色空間,旋轉它有高度,因爲它是最大的尺寸,放大它到256x128,然後在兩側添加64像素的空白。
- 您必須將您的圖形與每個數據庫圖像進行逐像素比較,並確定每個數據庫圖像重疊的黑色像素數量。然後你排序這些數字,你會得到最好的匹配。即使最佳匹配重疊像素少於20%,結果通常也不錯。
- 由於某些形狀可以被認爲是相同的,即使它們是旋轉的(想象在圖像中放置三角形的各種方式:一個尖端向上,向下或朝向一側等),您可能想要將輸入圖形旋轉12到24次(每步15到30度),並將每次旋轉與數據庫中的每幅圖像進行比較。鑑於此步驟很可能需要大量處理能力,因此您可能會考慮將初始數據庫圖形的所有旋轉存儲在數據庫中,作爲不同的圖片,從而使數據庫更大,但可以節省旋轉輸入圖像的工作量,這是昂貴的。
鑑於上述算法有點資源不足,您可以考慮在某個地方安裝一臺服務器,可以進行實際比較,特別是如果要將許多映像添加到數據庫時。由於我已經爲演示應用程序實現了這個算法,因此我可以告訴你,你將不得不做很多像素操作。此外,使用Android SDK旋轉圖像可能很煩人,因爲它會改變圖像尺寸...
如果您覺得冒險,下面是一些論文,描述了用於解決此問題的最新算法:「Shape contexts enable efficient retrieval of similar shapes 「由Greg Mori,Serge Belongie和Jitendra Malik(2001)以及Remco C. Veltkamp(2001)的」Shape Matching: Similarity Measures and Algorithms「。數學可能有點沉重,但。
相關問題
- 1. ViewController如何識別不在屏幕上
- 2. 在屏幕上獲取形狀
- 3. 屏幕上的數字識別
- 4. 用屏幕關閉Android語音識別?
- 5. 如何在Android屏幕上識別視圖移動?
- 6. 識別矩形形狀
- 7. IOS上的形狀識別objective-c
- 8. 如何識別iPhone屏幕
- 9. 圖像識別(形狀識別)
- 10. 簡單的形狀識別
- 11. 幾何/形狀識別(奇數形狀)
- 12. 在屏幕上查找字段位置的屏幕區域識別
- 13. 如何在Java Swing中切換屏幕上和屏幕外的形狀?
- 14. 在圖形屏幕上居中放置一個DSL形狀
- 15. openCV形狀缺陷識別
- 16. 重疊形狀識別(OpenCV)
- 17. 複雜形狀識別
- 18. 識別形狀用Matlab
- 19. 形狀識別框架?
- 20. 識別手寫體形狀
- 21. 識別屏幕上的東西並在java中單擊它
- 22. 如何識別在Linux的屏幕上打印什麼?
- 23. 我們如何識別在iPhone屏幕上繪製的字符?
- 24. 如何識別RecyclerView的最後一項在屏幕上可見?
- 25. Android密碼屏幕狀態
- 26. Android:在屏幕鎖定時識別手勢
- 27. 如何在整個屏幕上製作語音識別器rwork
- 28. 在iPhone屏幕上繪圖時識別圖案
- 29. Sikuli僅在主屏幕上識別圖像
- 30. OpenCV的形狀識別的基本形狀
歡迎使用stackoverflow。你有什麼試圖解決你的問題?請閱讀以下內容並改進您的問題:http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist –