|
cam1.py
import cv2
from PARAM import *
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, Lx)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, Ly)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('cam1.avi', fourcc, 20.0, (Lx,Ly))
t=0
while(t < 501 and cap.isOpened()):
ret, frame = cap.read()
t+=1
if ret == True:
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'): break
else: break
cap.release()
out.release()
cv2.destroyAllWindows()
|
PARAM.py
Lx=640; Ly=480; F=8; Lx2=int(Lx/F); Ly2=int(Ly/F) X1=int(Lx2/8); X2=X1*2; X3=X1*3; X4=X1*4; X5=X1*5; X6=X1*6; X7=X1*7 XX1=X1*F; XX2=X2*F XL=X2; XR=X6; |
|
cam3.py
from PARAM import *
from motorm import turn
import cv2
from RED1 import RED
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, Lx)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, Ly)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('cam3.avi', fourcc, 10.0, (Lx,Ly))
t=0
while(t < 1401 and cap.isOpened()):
ret,frame = cap.read(); t+=1
if ret == True:
DR,LRED,MIDL,img1,img2=RED(frame)
print(t,DR); out.write(img1); cv2.imshow('img1',img1)
if(DR==1): turn(0.4,0.4,0.05); turn(0,0,0.01);
if(DR==-2): turn(-0.4,-0.4,0.05); turn(0,0,0.01);
if(DR==3): turn(0.0,0.4,0.05); turn(0,0,0.01);
if(DR==7): turn(0.4,0.0,0.05); turn(0,0,0.01);
if cv2.waitKey(1) & 0xFF == ord('q'): break
else: break
cap.release()
out.release()
cv2.destroyAllWindows()
|
|
RED1.py
import numpy as np
import cv2
from PARAM import *
def RED(img):
img1=np.copy(img)
img2 = cv2.resize(img1, (Lx2,Ly2), interpolation=cv2.INTER_AREA)
Y=Ly2-1; XM=int(Lx2/2); RED=[]
for x in range(Lx2):
if(img2[Y][x][2] > 255*0.4 and img2[Y][x][2] > 1.5*img2[Y][x][1]
and img2[Y][x][2] > 1.5*img2[Y][x][0]):
RED.append(x)
LRED=len(RED)
if(LRED > 0): MIDL=int(np.median(RED))
else: MIDL=0
img2[:,XR,:]=[0,255,255]; img1[:,F*XR-1:F*XR+2,:]=[0,255,255]
img2[:,XL,:]=[0,255,255]; img1[:,F*XL-1:F*XL+2,:]=[0,255,255]
if(LRED < 1):
DR=-2
else:
if(XL <= MIDL <= XR): DR=1
elif(MIDL < XL): DR=3
elif(MIDL > XR): DR=7
return DR,LRED,MIDL,img1,img2
|
|
motorm.py
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
def turn(LS,RS,t):
EnaA=22
In1A=3
In2A=23
EnaB=17
In1B=22
In2B=27
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
PA = 2
PB = 3
PC = 15
MAP = 22
MAN = 23
MBP = 17
MBN = 27
pwmf= 100
dc = 20
PR = 18
PL = 21
GPIO.setup(PA, GPIO.IN)
GPIO.setup(PB, GPIO.IN)
GPIO.setup(PC, GPIO.IN)
GPIO.setup(PR, GPIO.IN)
GPIO.setup(PL, GPIO.IN)
GPIO.setup(MAP, GPIO.OUT)
GPIO.setup(MAN, GPIO.OUT)
GPIO.setup(MBP, GPIO.OUT)
GPIO.setup(MBN, GPIO.OUT)
pwmap=GPIO.PWM(MAP, pwmf)
pwman=GPIO.PWM(MAN, pwmf)
pwmbp=GPIO.PWM(MBP, pwmf)
pwmbn=GPIO.PWM(MBN, pwmf)
pwmap.start(0)
pwman.start(0)
pwmbp.start(0)
pwmbn.start(0)
#TURN(LS,RS,t); LS < RS for a left turn
LS *=100
RS *=100
if(LS > 0):
pwmap.start(LS)
pwman.start(0)
else:
pwmap.start(0)
pwman.start(-LS)
if(RS > 0):
pwmbp.start(RS)
pwmbn.start(0)
else:
pwmbp.start(0)
pwmbn.start(-RS)
sleep(t)
|