opencv函式pointpolygontest():
c++: double pointpolygontest(inputarray contour, point2f pt, bool measuredist)
用於判斷乙個點是否在輪廓中
當measuredist設定為true時,若返回值為正,表示點在輪廓內部,返回值為負,表示在輪廓外部,返回值為0,表示在輪廓上。
當measuredist設定為false時,若返回值為+1,表示點在輪廓內部,返回值為-1,表示在輪廓外部,返回值為0,表示在輪廓上。
例:
……/// 查詢輪廓std::vector>
contours;
cv::mat src;
//src為輸入影象
//判斷p1(x,y)是否在輪廓內
cv::point p1(x,y);
if (pointpolygontest(contours[j],cv::point(x1,y1),false) == 1)
需要注意的是,在這裡indicator >= 0,如果你是判斷是否在輪廓上,要修改為indicator == 0
參考:
判斷乙個點是否在RotatedRect中
opencv函式pointpolygontest c double pointpolygontest inputarray contour,point2f pt,bool measuredist 用於判斷乙個點是否在輪廓中 當measuredist設定為true時,若返回值為正,表示點在輪廓內部,返...
判斷乙個點是否在乙個多邊形裡
判斷乙個點是否在乙個多邊形裡 一開始以為是個挺難的問題,但google了一下之後發現其實蠻簡單,所用到的演算法叫做 ray casting algorithm 中文應該叫 光線投射演算法 這是維基百科的描述 維基百科 簡單地說可以這麼判斷 從這個點引出一根 射線 與多邊形的任意若干條邊相交,累計相交...
判斷乙個點是否在多邊形中
例項 1 圖 1是乙個典型的14邊形,紅點為測試點,判斷該紅點是否在14邊形中。解決方法 穿過紅點,做一條平行於x軸的水平線,於14邊形共有8個交點,如果,在紅點的左右兩邊各有奇數個交點,那麼在多邊形中 如果,左右兩邊各有偶數個交點,那麼不在多邊形中 圖 2 例項 2 多邊形是交叉的且封閉的。如圖二...