Найти - Пользователи
Полная версия: Помогите! Как указать область интереса в видеопотоке (ROI)
Начало » Центр помощи » Помогите! Как указать область интереса в видеопотоке (ROI)
1
BobCat152
ХЕЛБ!!! Помогите! Ниже приведен код для определения движения объектов с помощью cv2.findContours, необходимо, что бы поиск контуров осуществлялся внутри ограниченной прямоугольником области (ROI), а не на всем кадре. Как модифицировать код для осуществления задуманного?

Код:
import cv2
import numpy as np

def main():
cap=cv2.VideoCapture(0)

if cap.isOpened():
ret,frame = cap.read()
else:
ret =False

ret,frame1 = cap.read()
ret,frame2 = cap.read()

while ret:
upper_left = (50, 50)
bottom_right = (300, 300)

ret,frame = cap.read()
d=cv2.absdiff(frame1,frame2)
grey=cv2.cvtColor(d,cv2.COLOR_BGR2GRAY)
blur =cv2.GaussianBlur(grey,(5,5),0)
ret,th=cv2.threshold(blur,20,255,cv2.THRESH_BINARY)
dilated=cv2.dilate(th,np.ones((3,3),np.uint8),iterations=3)
c,h=cv2.findContours(dilated,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(frame1,c,-1,(0,255,0),2)
cv2.imshow(“inter”,frame1)

if cv2.waitKey(40) == 27:
break
frame1 = frame2
ret,frame2= cap.read()
cv2.destroyAllWindows()

cap.release()
main()

Спасибо за помощь!
PEHDOM
я так понимаю что захват всего кадра происходит вот тут:
ret, frameN = cap.read(), в ret у нас True или False, а в frameN собственно картинка, которую потом распознает cv2. Следовательно вам нужно после cap.read() обрезать ваш frameN как вам нужно, оставив только прямоугольник ROI
Судя по документации VideoCapture object не умеет захватывать только кусок картинки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB