如圖所示,現有若干藍點和紅色的點,這些點都是由不同直線相交得到的。現在需要從藍點和紅點中把紅點剔除,最后將藍點按輪廓走向(逆時針)排列,請問有什么好的演算法可以實作咧?最好是C/C++語言編程實作(不要依賴OpenCV等庫函式)
uj5u.com熱心網友回復:
這取決于你的點之間的關系,以及輪廓是怎么定義的從你的這個圖上看,貌似藍點是每行的兩端, 紅點是每行的中間點, 如果這樣就簡單了
做一個雙向佇列的資料結構
按照縱坐標順序,從第一行開始, 洗掉中間點,只保留兩端的藍色點; 左側端點從佇列頭插入,右側從尾巴插入
下一行也同樣處理,保留兩端的藍點, 左側的依然放入佇列頭, 右側依然放入佇列尾巴
以此類推, 直到所有的行處理完
此時, 佇列從頭到尾的頂點順序就是順時針順序, 從尾巴到頭就是逆時針順序了
uj5u.com熱心網友回復:
要是資料按照行來布局,您的方式可行。我的資料并非是行排列的,只是為了方便,將一些點畫成一行,實際情況是有可能是傾斜的。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93085.html
標籤:C++ 語言
上一篇:cppdb連接mysql資料庫時報錯:cppdb::driver failed to load driver mysql - no module found
