Я пытаюсь создать в своем доме систему видеонаблюдения своими руками с малиной через поток rtsp с ip-камеры.Я не очень опытен с 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 в обычном квадрате, я не получаю желаемой точности.На самом деле область должна быть неправильным многоугольником, например: ![enter image description here](https://i.stack.imgur.com/f9CtF.jpg)
Я надеюсь, что изображение поможет вам понять, чего я хочу достичь.Заранее благодарю за ответы.