👨💻个人简介: 深度学习图像领域工作者
🎉总结链接:
链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:
📌1.工作中常用深度学习脚本
📌2.torch、numpy等常用函数详解
📌3.opencv 图片、视频等操作
📌4.个人工作中的项目总结(纯干活)
链接: https://blog.csdn.net/qq_28949847/article/details/128552785
🎉视频讲解: 以上记录,通过B站等平台进行了视频讲解使用,可搜索 ‘Python图像识别’ 进行观看
B站:Python图像识别
抖音:Python图像识别
西瓜视频:Python图像识别
超链接:B站对此代码进行了讲解
1、cv2.pointPolygonTest() 函数
函数定义:
cv2.pointPolygonTest(contour, pt, measureDist)
函数功能:
找到图像里的点和轮廓之间的最短距离. 它返回的距离当点在轮廓外的时候是负值,当点在轮廓内是正值,如果在轮廓上是0。
参数:
contour :轮廓多边形
pt :坐标点
measureDist:若为True,返回带符号的距离;若为False,会找点是否在内,外,或轮廓上(相应返回+1, -1, 0)。
注意:
contour 传入的是np格式的数据
示例代码:文章来源:https://www.toymoban.com/news/detail-462900.html
import cv2
import numpy as np
def onmouse_pick_points(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
print('x = %d, y = %d' % (x, y))
# 判断点是否在区域内
flag = cv2.pointPolygonTest(pts, (x, y), False)
if flag >= 0:
color = (0, 255, 0)
else:
color = (0, 0, 255)
cv2.drawMarker(param, (x, y), color)
if __name__ == '__main__':
WIN_NAME = 'pick_points'
# 凸形状区域
# pts = np.array([[25, 70], [25, 160],
# [110, 200], [200, 160],
# [200, 70], [110, 20]],
# np.int32)
# 凹形状
pts = np.array([[100, 100], [400, 100],
[400, 200], [150, 200],
[150, 450], [400, 450],
[400, 550], [100, 550]],
np.int32)
pts = pts.reshape((-1, 1, 2))
image = np.zeros((800, 800, 3), np.uint8)
cv2.namedWindow(WIN_NAME, 0)
cv2.setMouseCallback(WIN_NAME, onmouse_pick_points, image)
cv2.polylines(image, [pts], True, (255, 255, 255), 3)
while True:
cv2.imshow(WIN_NAME, image)
key = cv2.waitKey(1)
if key == 27:
break
cv2.destroyAllWindows()
效果展示:
凹形状区域,红色十字架代表在区域外,绿色代表在区域内
凸形状区域:
文章来源地址https://www.toymoban.com/news/detail-462900.html
到了这里,关于python opencv 判断点是否在区域内——cv2.pointPolygonTest()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!