在人脸检测中,使用预先被训练过的模型文件去侦测脸和眼睛。同样使用预先被训练过来的模型文件去检测汽车。将用这个模型检测出来的汽车用矩形框出来。
代码如下:
- # OpenCV Python program to detect cars in video frame 
 - # import libraries of python OpenCV  
 - import cv2 
 -   
 - # capture frames from a video 
 - cap = cv2.VideoCapture('video.avi') 
 -   
 - # Trained XML classifiers describes some features of some object we want to detect 
 - car_cascade = cv2.CascadeClassifier('cars.xml') 
 -   
 - # loop runs if capturing has been initialized. 
 - while True: 
 -     # reads frames from a video 
 -     ret, frames = cap.read() 
 -       
 -     # convert to gray scale of each frames 
 -     gray = cv2.cvtColor(frames, cv2.COLOR_BGR2GRAY) 
 -       
 -   
 -     # Detects cars of different sizes in the input image 
 -     cars = car_cascade.detectMultiScale(gray, 1.1, 1) 
 -       
 -     # To draw a rectangle in each cars 
 -     for (x,y,w,h) in cars: 
 -         cv2.rectangle(frames,(x,y),(x+w,y+h),(0,0,255),2) 
 -   
 -    # Display frames in a window  
 -    cv2.imshow('video2', frames) 
 -       
 -     # Wait for Esc key to stop 
 -     if cv2.waitKey(33) == 27: 
 -         break
 -   
 - # De-allocate any associated memory usage 
 - cv2.destroyAllWindows() 
 
 
下面用个图片来试下,代码改成:
- # OpenCV Python program to detect cars in video frame
 - # import libraries of python OpenCV
 - import cv2
 -  
 - if __name__ == '__main__':
 -     # capture frames from a video
 -     cap = cv2.imread('c1.jpg')
 -  
 -     # Trained XML classifiers describes some features of some object we want to detect
 -     car_cascade = cv2.CascadeClassifier('haarcascade_car.xml')
 -  
 -  
 -  
 -     # convert to gray scale of each frames
 -     gray = cv2.cvtColor(cap, cv2.COLOR_BGR2GRAY)
 -  
 -     # Detects cars of different sizes in the input image
 -     cars = car_cascade.detectMultiScale(gray, 1.1, 1)
 -  
 -     # To draw a rectangle in each cars
 -     for (x, y, w, h) in cars:
 -         cv2.rectangle(cap, (x, y), (x + w, y + h), (0, 0, 255), 2)
 -         # Display frames in a window
 -         cv2.imshow('ret', cap)
 -  
 -     cv2.waitKey(0)
 -  
 -     # De-allocate any associated memory usage
 -     cv2.destroyAllWindows()
 -     pass
 
 
结果如下:


                


















