Skip to content
Snippets Groups Projects
Commit fc34dcd3 authored by benjamin.sitbon's avatar benjamin.sitbon
Browse files

need to clean this

parent df692a8f
No related branches found
No related tags found
No related merge requests found
File added
# coding: utf-8
"""
pad = Gamepad()
pad.start()
while True:
for i in range(10):
pad.x_val = i * 10
time.sleep(1)
"""
import threading
import time
......@@ -39,3 +34,11 @@ class Gamepad:
def start(self):
threading.Thread(target=self.pt).start()
pad = Gamepad()
pad.start()
while True:
for i in range(10):
pad.x_val = i * 10
time.sleep(1)
\ No newline at end of file
import argparse
import imutils
import cv2
import time
import numpy as np
import matplotlib.pyplot as plt
def nothing(x):
pass
def calc_angle(x1, y1, x2, y2):
if x2 - x1 == 0:
return 0
a = (y2 - y1) / (x2 - x1)
return -math.atan(a) * 360 / (2 * math.pi)
def find_center(mask):
cnts= cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cx = 0
cy = 0
for c in cnts:
if cv2.contourArea(c) > args["min_area"]:
M = cv2.moments(c)
cx = int(M["m10"] / M["m00"])
cy = int(M["m01"] / M["m00"])
return cx, cy
cap = cv2.VideoCapture('wheel_racing.avi') # video
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", help="path to the video file")
ap.add_argument("-a", "--min-area", type=int, default=500, help="minimum area size")
args = vars(ap.parse_args())
angles = np.array([])
temps = np.array([])
count = 0
cv2.namedWindow('red')
cv2.namedWindow('orange')
cv2.namedWindow('main')
cv2.createTrackbar('red_h_min','red',0,255,nothing)
cv2.createTrackbar('red_s_min','red',0,255,nothing)
cv2.createTrackbar('red_v_min','red',0,255,nothing)
cv2.createTrackbar('red_h_max','red',0,255,nothing)
cv2.createTrackbar('red_s_max','red',0,255,nothing)
cv2.createTrackbar('red_v_max','red',0,255,nothing)
cv2.createTrackbar('orange_h_min','orange',0,255,nothing)
cv2.createTrackbar('orange_s_min','orange',0,255,nothing)
cv2.createTrackbar('orange_v_min','orange',0,255,nothing)
cv2.createTrackbar('orange_h_max','orange',0,255,nothing)
cv2.createTrackbar('orange_s_max','orange',0,255,nothing)
cv2.createTrackbar('orange_v_max','orange',0,255,nothing)
while True:
RedHMin = cv2.getTrackbarPos('red_h_min','red')
RedSMin = cv2.getTrackbarPos('red_s_min','red')
RedVMin = cv2.getTrackbarPos('red_v_min','red')
RedHMax = cv2.getTrackbarPos('red_h_max','red')
RedSMax = cv2.getTrackbarPos('red_s_max','red')
RedVMax = cv2.getTrackbarPos('red_v_max','red')
OrangeHMin = cv2.getTrackbarPos('orange_h_min','orange')
OrangeSMin = cv2.getTrackbarPos('orange_s_min','orange')
OrangeVMin = cv2.getTrackbarPos('orange_v_min','orange')
OrangeHMax = cv2.getTrackbarPos('orange_h_max','orange')
OrangeSMax = cv2.getTrackbarPos('orange_s_max','orange')
OrangeVMax = cv2.getTrackbarPos('orange_v_max','orange')
ret, img = cap.read()
if ret == False:
break
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
red_min = np.array([RedHMin, RedSMin, RedVMin],np.uint8)
red_max = np.array([RedHMax, RedSMax, RedVMax],np.uint8)
RedMask = cv2.inRange(hsv_img, red_min, red_max)
orange_min = np.array([OrangeHMin, OrangeSMin, OrangeVMin],np.uint8)
orange_max = np.array([OrangeHMax, OrangeSMax, OrangeVMax],np.uint8)
OrangeMask = cv2.inRange(hsv_img, orange_min, orange_max)
mask = RedMask + OrangeMask
kernel = np.ones((5,5), np.uint8)
# rempli les trou dans les objets
mask_red = cv2.morphologyEx(RedMask, cv2.MORPH_CLOSE, kernel)
mask_orange = cv2.morphologyEx(OrangeMask, cv2.MORPH_CLOSE, kernel)
x1, y1 = find_center(mask_red)
x2, y2 = find_center(mask_orange)
angle = calc_angle(x1, y1, x2, y2)
angles = np.append(angles, angle)
temps = np.append(temps, count)
count += 1
cv2.imshow('main',mask)
cv2.imshow('orange',OrangeMask)
cv2.imshow('red', RedMask)
# opencv va lire la video aussi rapidement que possible
# on ralenti un peu pour voir les frames
time.sleep (0.02) # video
if cv2.waitKey(1) & 0xFF == ord ('p'):
while(1):
if cv2.waitKey(1) & 0xFF == ord ('p'):
break
elif cv2.waitKey(1) & 0xFF == ord ('q'):
break
cap.release()
cv2.destroyAllWindows()
plt.plot(temps, angles, 'g')
plt.yscale('linear')
plt.show()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment