Facebook
From Seven, 1 Year ago, written in Python.
Embed
Download Paste or View Raw
Hits: 151
  1. import cv2
  2. import numpy as np
  3. import sys
  4. import signal
  5.  
  6. areaArray = []
  7. count = 1
  8.  
  9. end = False
  10.  
  11. # --------------------------------------
  12. def signal_handler(signal, frame):
  13.     global end
  14.     end = True
  15.  
  16. # --------------------------------------
  17. cap = cv2.VideoCapture(3)
  18.  
  19. if (cap.isOpened() == False):  
  20.     print("Error reading video file")
  21.  
  22. fourcc = cv2.VideoWriter_fourcc(*'DIVX')
  23. out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
  24.  
  25. signal.signal(signal.SIGINT, signal_handler)
  26. print('Capturando o vídeo da webcam -- pressione Ctrl+C para encerrar...')
  27.  
  28. while (not end):
  29.      ret, framer = cap.read()
  30.      if ret == True:
  31.           frame = resized = cv2.resize(framer, None, fx=1, fy=1)
  32.           gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Transform image to gray
  33.           hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
  34.           kernel = np.ones((20,20),np.uint8)
  35.           mask = cv2.inRange(hsv,np.array([0,0,201],np.uint8), np.array([255,10,255],np.uint8))
  36.           mask = cv2.erode(mask,kernel)
  37.           mask = cv2.dilate(mask,kernel)
  38.           V_contours, hierarchy = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
  39.  
  40.           for cnt in V_contours:
  41.  
  42.                     if len(V_contours) >= 2 :
  43.                          for i, c in enumerate(V_contours):
  44.                               area = cv2.contourArea(c)
  45.                               areaArray.append(area)
  46.                          sorteddata = sorted(zip(areaArray, V_contours), key=lambda x: x[0], reverse=True)
  47.                          secondlargestcontour = sorteddata[1][1]
  48.                          maior = max(V_contours,key=cv2.contourArea)
  49.                          M = cv2.moments(maior)
  50.                          M1 = cv2.moments(secondlargestcontour)
  51.  
  52.                          if M["m00"] !=0 :
  53.                          
  54.                               cx = int(M['m10']/M['m00'])
  55.                               cy = int(M['m01']/M['m00'])
  56.                    
  57.                          if M1["m00"] !=0 :
  58.                               cx1 = int(M1['m10']/M1['m00'])
  59.                               cy1 = int(M1['m01']/M1['m00'])
  60.                          cv2.circle(frame, (cx,cy), 25, (255,0,0), -1)
  61.                          cv2.circle(frame, (cx1,cy1), 25, (0,255,0), -1)
  62.           cv2.imshow("Range mask ", mask)
  63.           cv2.imshow("Frame",frame)
  64.           out.write(frame)
  65.  
  66.           if cv2.waitKey(30) & 0xff == ord('q'):   # 1 is the time in ms
  67.                break
  68.      else:
  69.           break
  70. cap.release()
  71. out.release()
  72.    
  73. cv2.destroyAllWindows()
  74.    
  75. print("The video was successfully saved")