import cv2
import numpy as np
import vehicles
import requests
#import time
#from matplotlib import pyplot as plt
#import time
#url="http://192.168.43.1:8080/shot.jpg"
def main():
cnt_up=0
cnt_down=0
print("creation of dataset")
cap=cv2.VideoCapture("C://Users//khaoula//AndroidStudioProjects //RADAR//app//src//main//python//cars.mp4")
print("1111")
#Get width and height of video
w=cap.get(3)
h=cap.get(4)
frameArea=h*w
areaTH=frameArea/400
print("2222")
#Lines
line_up=int(2*(h/5))
line_down=int(3*(h/5))
print("33333")
up_limit=int(1*(h/5))
down_limit=int(4*(h/5))
#print("Red line y:",str(line_down))
#print("Blue line y:",str(line_up))
line_down_color=(255,0,0)
line_up_color=(255,0,255)
pt1 = [0, line_down]
pt2 = [w, line_down]
print("44444")
pts_L1 = np.array([pt1,pt2], np.int32)
pts_L1 = pts_L1.reshape((-1,1,2))
pt3 = [0, line_up]
pt4 = [w, line_up]
pts_L2 = np.array([pt3,pt4], np.int32)
pts_L2 = pts_L2.reshape((-1,1,2))
print("55555")
pt5 = [0, up_limit]
pt6 = [w, up_limit]
pts_L3 = np.array([pt5,pt6], np.int32)
pts_L3 = pts_L3.reshape((-1,1,2))
pt7 = [0, down_limit]
pt8 = [w, down_limit]
pts_L4 = np.array([pt7,pt8], np.int32)
pts_L4 = pts_L4.reshape((-1,1,2))
print("666666")
#Background Subtractor
fgbg=cv2.createBackgroundSubtractorMOG2(detectShadows=True)
print("77777")
#Kernals
kernalOp = np.ones((3,3),np.uint8)
kernalOp2 = np.ones((5,5),np.uint8)
kernalCl = np.ones((11,11),np.uint8)
print("88888")
font = cv2.FONT_HERSHEY_SIMPLEX
cars = []
max_p_age = 5
pid = 1
print("99999")
while (cap.isOpened()):
print("kkkkk")
ret,frame=cap.read()
rows1,cols1,_=frame.shape
print(rows1,cols1) # 1280 720
#roi = frame[50:540, 200:960]
#cols,rows,_=roi.shape
#print("cols:")
#print(cols) #490
#print("rows:")
#print(rows) #760
for i in cars:
i.age_one()
print("i:")
print(i)
print("10")
fgmask=fgbg.apply(frame)
fgmask2=fgbg.apply(frame)
print("11")
if ret==True:
#Binarization
ret,imBin=cv2.threshold(fgmask,200,255,cv2.THRESH_BINARY)
ret,imBin2=cv2.threshold(fgmask2,200,255,cv2.THRESH_BINARY)
#OPening i.e First Erode the dilate
mask=cv2.morphologyEx(imBin,cv2.MORPH_OPEN,kernalOp)
mask2=cv2.morphologyEx(imBin2,cv2.MORPH_CLOSE,kernalOp)
#Closing i.e First Dilate then Erode
mask=cv2.morphologyEx(mask,cv2.MORPH_CLOSE,kernalCl)
mask2 = cv2.morphologyEx(mask2, cv2.MORPH_CLOSE, kernalCl)
print("12")
#Find Contours
countours0,hierarchy=cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
print("13")
for cnt in countours0:
area=cv2.contourArea(cnt)
if area>areaTH:
####Tracking######
m=cv2.moments(cnt)
cx=int(m['m10']/m['m00'])
cy=int(m['m01']/m['m00'])
x,y,w,h=cv2.boundingRect(cnt)
#cv2.rectangle(roi, (x, y), (x + w, y + h), (0, 165, 255), 5)
crop_frame=frame[y-3:y + h+3, x-3:x + w+3]
new=True
if cy in range(up_limit,down_limit):
for i in cars:
if abs(x - i.getX()) <= w and abs(y - i.getY()) <= h:
new = False
i.updateCoords(cx, cy)
if i.going_UP(line_down,line_up)==True:
cnt_up+=1
print("ID:",i.getId(),'crossed going up ')#at', time.strftime("%c"))
elif i.going_DOWN(line_down,line_up)==True:
cnt_down+=1
print("ID:", i.getId(), 'crossed going up')# at', time.strftime("%c"))
break
if i.getState()=='1':
if i.getDir()=='down'and i.getY()>down_limit:
i.setDone()
elif i.getDir()=='up'and i.getY()<up_limit:
i.setDone()
if i.timedOut():
index=cars.index(i)
cars.pop(index)
del i
#file=*****************************************************************************
#file = "C://Users//khaoula//PycharmProjects//Radar//" + "hh.jpg"
#cv2.imwrite(file, i)
if new==True: #If nothing is detected,create new
p=vehicles.Car(pid,cx,cy,max_p_age)
n=str(pid)
cars.append(p)
pid+=1
#cv2.circle(frame,(cx,cy),5,(0,0,255),-1)
#while True:
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
#print(img)
#crop_img = roi[y :y + h , x :x + w ]
# s = cv2.imread(str(crop_img))
#n = str(pid) # +"_speed_"+str(sp)
#file = 'C://Users//khaoula//PycharmProjects//Radar//' + n + '.jpg'
#cv2.imwrite(file, roi)
#print("img:")
#print(img)
#file = "C://Users//khaoula//PycharmProjects//Radar//" + "hh.jpg"
#cv2.imwrite(file, img)
for i in cars:
cv2.putText(frame, str(i.getId()), (i.getX(), i.getY()), font, 0.3, i.getRGB(), 1, cv2.LINE_AA)
#crop_img = roi[i.getY():i.getY() + h, i.getX():i.getX() + w]
file = 'C://Users//khaoula//PycharmProjects//Radar//pics//' + n + '.jpg'
cv2.imwrite(file, crop_frame)
#cv2.imshow("img", frameArea)
#t = time.strftime("%Y-%m-%d_%H-%M-%S")
#file = "C://Users//khaoula//PycharmProjects//Radar//" + ".jpg"
#cv2.imwrite(file, frameArea)
str_up='UP: '+str(cnt_up)
str_down='DOWN: '+str(cnt_down)
frame=cv2.polylines(frame,[pts_L1],False,line_down_color,thickness=2)
frame=cv2.polylines(frame,[pts_L2],False,line_up_color,thickness=2)
frame=cv2.polylines(frame,[pts_L3],False,(255,255,255),thickness=1)
frame=cv2.polylines(frame,[pts_L4],False,(255,255,255),thickness=1)
cv2.putText(frame, str_up, (10, 40), font, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
cv2.putText(frame, str_up, (10, 40), font, 0.5, (0, 0, 255), 1, cv2.LINE_AA)
cv2.putText(frame, str_down, (10, 90), font, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
cv2.putText(frame, str_down, (10, 90), font, 0.5, (255, 0, 0), 1, cv2.LINE_AA)
cv2.imshow('Frame',frame)
print(str_up)
print(str_down)
if cv2.waitKey(1)&0xff==ord('q'):
break
else:
break
print("mmmmmmmmmm")
cap.release()
return cap
这是我试图集成到 android studio 中的 python 代码,似乎问题出在 while 循环中,因为我得到所有打印,直到 9999 然后应用程序崩溃我认为这是因为视频我正在努力,但我还不确定