Create DetectStopSign.py
This commit is contained in:
parent
59be6810ee
commit
7fbbe9ef44
|
@ -0,0 +1,74 @@
|
||||||
|
###############################
|
||||||
|
#### Stop Car at Stop Sign ####
|
||||||
|
#### --------------------- ####
|
||||||
|
#### Objective: ####
|
||||||
|
#### > Drive car forward ####
|
||||||
|
#### until a sotpsign is ####
|
||||||
|
#### spotted on the cam ####
|
||||||
|
###############################
|
||||||
|
|
||||||
|
from picamera.array import PiRGBArray
|
||||||
|
from picamera import PiCamera
|
||||||
|
from time import sleep
|
||||||
|
import cv2
|
||||||
|
|
||||||
|
from kuukar_motion import drive, stop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Inializations: #
|
||||||
|
#Camera fps/size
|
||||||
|
camera=PiCamera()
|
||||||
|
camera.resolution=(640,480)
|
||||||
|
camera.framerate=20
|
||||||
|
rawCapture=PiRGBArray(camera,size=(640,480))
|
||||||
|
sleep(0.1)
|
||||||
|
stopsign_cascade=cv2.CascadeClassifier('/home/pi/Desktop/oldRPi/RPi/stopsign_good.xml')
|
||||||
|
|
||||||
|
""" Download Stopsign_good.xml to the RPi : https://github.com/chadrs2/Self-Driving_Car_Project/blob/master/stopsign_good.xml"""
|
||||||
|
|
||||||
|
|
||||||
|
# Begin Camera video and driving forward #
|
||||||
|
camera.start_preview()
|
||||||
|
camera.start_recording('stopsign_video.h264')
|
||||||
|
for frame in camera.capture_continuous(rawCapture,format="bgr",use_video_port=True):
|
||||||
|
# Begin driving at medium speed
|
||||||
|
drive(30) ###
|
||||||
|
|
||||||
|
# grab raw NumPy array representing image - 3D array
|
||||||
|
image=frame.array
|
||||||
|
#convert image to grayscale
|
||||||
|
gray_img=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
|
||||||
|
# Wait and read key input
|
||||||
|
key=cv2.waitKey(1) & 0xFF
|
||||||
|
# Find stopsign in image
|
||||||
|
print("Before stop sign finding")
|
||||||
|
found_stopsigns=stopsign_cascade.detectMultiScale(gray_img,1.1,5)
|
||||||
|
print("Found "+str(len(found_stopsigns))+" stop sign(s)")
|
||||||
|
if len(found_stopsigns)>0:
|
||||||
|
for (x,y,w,h) in found_stopsigns:
|
||||||
|
cv2.rectangle(image,(x,y),(x+w,y+h),(255,255,0),2)
|
||||||
|
camera.add_overlay(image)
|
||||||
|
cv2.imwrite("found_stopsign_Jun_25_20.jpg",image)
|
||||||
|
sign_width=w
|
||||||
|
sign_height=h
|
||||||
|
print("width of stop sign:",w,"and height:",h)
|
||||||
|
if(sign_width>65 or sign_height>65):
|
||||||
|
print("Turn on brake lights")
|
||||||
|
print("Decrease motor speed")
|
||||||
|
print("stop car")
|
||||||
|
time.sleep(2) #delay for 2 seconds after found the stop sign
|
||||||
|
stop()
|
||||||
|
break
|
||||||
|
#clear the stream in preparation for the next frame
|
||||||
|
rawCapture.truncate(0)
|
||||||
|
# if the 'q' key was pressed or a stop sign was found
|
||||||
|
# break from the loop
|
||||||
|
if key == ord("q"): #or len(found_stopsigns)>0:
|
||||||
|
break
|
||||||
|
# End camera functions
|
||||||
|
camera.stop_recording()
|
||||||
|
camera.stop_preview()
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
camera.close()
|
||||||
|
# End car functions
|
Loading…
Reference in New Issue