我正在尝试通过ip cam的rtsp流在家里用覆盆子创建一个DIY视频监控系统。我对opencv和python不太熟悉,但是最近这些天,我仍在尝试学习如何使用它们。我相信我的问题对许多人来说可能很简单。
我正在使用从github下载的跟踪代码,并根据需要对其进行了自定义。只需使用以下命令,我就可以轻松地检测到我所建立的正方形区域中某个对象的存在:
_, contours0, hierarchy = cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours0:
area_detect = cv2.contourArea(cnt)
if area_detect > minsize_detect and area_detect < maxsize_detect:
M = cv2.moments(cnt)
cy = int(M['m10']/M['m00'])
cx = int(M['m01']/M['m00'])
x,y,w,h = cv2.boundingRect(cnt)
# Detect in area point
if cx in range(Area_up_pnt,Area_down_pnt) and cy in range(Area_left_pnt,Area_right_pnt):
count_in_area += 1;
我还可以使用以下命令从正方形的左右线识别入侵侧:
for i in persons:
if abs(cx-i.getX()) <= h and abs(cy-i.getY()) <= w:
# update coordinates
i.updateCoords(cx,cy)
# Verso sx
if i.goline_SX(LINE_rightarea_pnt,LINE_rightarea_pnt) and cx in range(Area_up_pnt,Area_down_pnt):
countleftinside += 1;
代码工作正常,但是仅基于规则正方形中的x,y坐标,我无法获得所需的精度。实际上,该区域应该是不规则的多边形,例如:
我希望图像能帮助您理解我想要实现的目标。我预先感谢您的回答。