opencv判断点在轮廓内还是轮廓外

发布时间 2023-06-02 19:24:18作者: 西北逍遥

 

import cv2
 
mask = cv2.imread(r"2.png", 0)
mask[mask > 100] = 255
mask[mask != 255] = 0
 
cnts, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
print("mask info:", mask.shape, len(cnts))
 
pt0 = (131, 104)  # 外点, 红色
pt1 = (166, 157)  # 轮廓上的点
pt2 = (260, 170)  # 内点
img = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
img = cv2.circle(img, pt0, 2, (0, 0, 255), 2)  # 红色
img = cv2.circle(img, pt1, 2, (0, 255, 0), 2)  # 绿色
img = cv2.circle(img, pt2, 2, (255, 0, 0), 2)  # 蓝色
 
dst0 = cv2.pointPolygonTest(cnts[0], pt0, 1)
dst1 = cv2.pointPolygonTest(cnts[0], pt1, 1)
dst2 = cv2.pointPolygonTest(cnts[0], pt2, 1)
print("dst:", dst0, dst1, dst2)

cv2.imshow("win1",img)
#cv2.imwrite(r"ret.jpg", img)

cv2.waitKey(0)

 

 

参考:https://blog.csdn.net/weixin_34910922/article/details/125610396

##############