2016-10-28 4 views
0

나는 녹색 물체를 추적하고 물체 영역 위에 사각형을 그려주는 라이브 비디오 피드를 가지고 있습니다. 나는 사각형을 둘러싼 영역 만 보여주기 위해 피드를자를 수있는 방법에 대해 궁금합니다. 당신이 찾고 될 일을OpenCV 라이브 비디오 피드 자르기

while True: 

    (success, frame) = webcam.read() 

    frame = imutils.resize(frame, width = 1000) 
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 

    mask = cv2.inRange(hsv, greenLower, greenUpper) 
    mask = cv2.erode(mask, None, iterations=2) 
    mask = cv2.dilate(mask, None, iterations=2) 

    cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] 
    center = None 

    if len(cnts) > 0: 

     c = max(cnts, key=cv2.contourArea) 
     ((x, y), radius) = cv2.minEnclosingCircle(c) 
     M = cv2.moments(c) 
     center = (int(M["m10"]/M["m00"]), int(M["m01"]/M["m00"])) 

    for c in cnts: 
     if cv2.contourArea(c) < 500: 
      continue 

     (x, y, w, h) = cv2.boundingRect(c) 
     cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2) 

    pts = deque(maxlen = 32) 
    pts.appendleft(center) 

    for i in xrange(1, len(pts)): 

     if pts[i - 1] is None or pts[i] is None: 
      continue 

     thickness = int(np.sqrt(args["buffer"]/float(i + 1)) * 2.5) 
     cv2.line(frame, pts[i - 1], pts[i], (0, 255, 0), thickness) 

    cv2.imshow("Presentation Tracker", frame) 

답변

0

이 OpenCV의 파이썬을 사용하여 '관심 (ROI)의 지역'을 만드는 것입니다 :

여기 관련 섹션입니다.

같이 당신은 당신의 코드에서 수행 할 수 있습니다 :

(x, y)에 당신의 사각형 왼쪽 위 지점에 해당하는 것으로
(x, y, w, h) = cv2.boundingRect(c) 
cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2) 
roi = frame[y:y+h, x:x+w] 

. 위에서 선언 한 rect 내의 영역이 Mat roi에 저장되었습니다.

관련 문제