问题描述
我目前正在使用Haar-cascade进行人类步行速度估计的项目。该程序的工作方式如下:检测到的物体通过两条假想线,当它通过第二条线时,程序将显示速度。我正在使用的当前程序仅计算从上到下移动的检测到的对象,但我希望该程序也能捕获从下到上的计算,以便能够以两种方式进行计算。
这是程序:
import cv2
import time
cascade_src = 'haarcascade_fullbody.xml'
video_src = 'video-1.mp4'
#line a
ax1=15
ay=225
ax2=600
#line b
bx1=15
by=275
bx2=600
#car num
i = 1
start_time = time.time()
#video ....
cap = cv2.VideoCapture(video_src)
human_cascade = cv2.CascadeClassifier(cascade_src)
videoWidth = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
videoHeight = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('wisuda-14.mp4',fourcc,25.0,(videoWidth,videoHeight))
def Speed_Cal(time):
try:
Speed = (9.144*3600)/(time*1000)
return Speed
except ZeroDivisionError:
print (5)
while True:
ret,img = cap.read()
if (type(img) == type(None)):
break
#bluring to have exacter detection
blurred = cv2.blur(img,ksize=(3,3))
gray = cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY)
human = human_cascade.detectMultiScale(gray,scaleFactor=1.04865,minNeighbors=6)
#line a #i kNow road has got
cv2.line(img,(ax1,ay),(ax2,(255,0),2)
#line b
cv2.line(img,(bx1,by),(bx2,2)
for (x,y,w,h) in human:
cv2.rectangle(img,(x,y),(x + w,y + h),(0,255),2)
roi_blurred = blurred[x: x + h,y:y + w]
roi_gray = gray[x: x + h,y:y + w]
roi_img = img[x: x + h,y:y + w]
cv2.circle(img,(int((x+x+w)/2),int((y+y+h)/2)),2,255,-1)
#cv2.putText(img,"ID : " + str(i),y-15),cv2.FONT_HERShey_SIMPLEX,0.5,1);
while int(ay) == int((y+y+h)/2):
start_time = time.time()
break
while int(ay) <= int((y+y+h)/2):
if int(by) <= int((y+y+h)/2)&int(by+10) >= int((y+y+h)/2):
cv2.line(img,2)
Speed = Speed_Cal(time.time() - start_time)
print("ID Number "+str(i)+" Speed: " + str(int(Speed)))
i = i + 1
cv2.putText(img,"Speed: "+str(int(Speed))+"km/jam",1,2);
break
else :
break
out.write(img)
cv2.imshow('video',img)
cv2.imshow('Gray',gray)
cv2.imshow('Blurr',blurred)
if cv2.waitKey(33) == 27:
break
cap.release()
out.release()
cv2.destroyAllWindows()
希望您可以帮助伙计们
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)