有矢量化工具在那裏,但如果你想代碼時(這是一項艱鉅的任務)做到這一點:
黑點
存儲的所有點在一些掃描圖像的(x,y)
list
座標
添加連接信息到所有點
這將需要大量的內存如果沒有正確編碼,所以添加分組信息點是每個點連接(記住只是索引)。
添加使用標誌指向
發現關節之間的折線
關節是點與更然後2
連接點,以便
- 找到這樣的點
i
- 通過它的連接點,直到另一個連接點
j
被擊中而沒有通過任何點兩次。這就是爲什麼你需要使用標誌。存儲這個路徑polyline
發現閉環
它類似於#4,但你需要逐步完成polylines
回到起點。記住polylines
爲polygons
所以,你需要類似這樣的結構:
struct pnt
{
int x,y; // coordinate fo point
int used; // usage flag for later use
List<int> ix; // list of indexes of all points connected to this point
};
struct polylin
{
List<int> ix; // list of point indexes
};
struct polygon
{
List<int> lin; // list of polyline indexes
List<int> dir; // direction of polyline (forward/backward)
};
List<pnt> pnts;
List<polylin> plins;
List<polygon> faces;
如果你的形象加分有內遂洞,你將需要額外的圖像處理或通過連接點發現來處理它們與一些閾值距離。
你有沒有考慮過創建一個SVG圖像?您將指定輪廓線,表明它們應該形成一個閉合曲線並填充您選擇的顏色。 – collapsar 2015-02-05 18:00:22
我可以悲傷地不在我的應用程序中使用SVG,但SVG能否自動給我所需的結果,還是我必須手動定義這些? – 2015-02-05 18:02:58
將自動生成顏色填充(只需將「填充」屬性添加到輪廓折線)。 – collapsar 2015-02-05 18:07:28