车辆识别
训练模型下载: 1、下载训练模型(.xml文件)CSDN:0积分下载
GitHub:原资源
2、将文件放在你个你自己找得到的地方,我放在项目文件夹下的如果没有放在项目文件夹下,注意改写下面的文件地址
string car_cascade_name = "haarcascade_car.xml"; //训练的xml文件代码:(可直接食用)
**使用前请注意训练文件和需要识别的视频文件位置是否正确**
#include测试视频:#include #include #include #include #include #include #include #include using namespace std; using namespace cv; int main() { // 加载级联分类xml文件: string car_cascade_name = "haarcascade_car.xml"; //训练的xml文件 CascadeClassifier car_cascade; car_cascade.load(car_cascade_name); //加载xml文件 // 加载视频: Mat frame; VideoCapture cap; string video_name = "car1.avi";//需要打开的视频名称 if (!cap.open(video_name)) //判断视频地址是否有视频 { cout << "Cannot open the video file " << video_name << endl; //打印无视频信息 } // 对视频进行处理 Mat frame_resized; // 调整视频大小 Mat gray; // 调整视频为灰色,方便处理 while (cap.read(frame)) //判断视频是否播放完 { int k = waitKey(30); if (k == 27) //点击ESC退出播放 { int c = waitKey(0); break; }else if (k == 13) //点击Enter键,暂停 { while (true) { int c = waitKey(0); if (c == 13) //点击Enter键,继续 { break; } } } resize(frame, frame_resized, Size(0,0), 2, 2);//调整视频大小,放大2倍 // imshow("Original size", frame); //输出原视视频 imshow("Resized", frame_resized); //输出放大的视频 cvtColor(frame_resized, gray, COLOR_BGR2GRAY); //将每帧变为灰度图片 // 使用 classifier 查找车辆: vector cars; car_cascade.detectMultiScale(gray, cars, 1.14, 2); //检测汽车数量 if (cars.empty() == true) { cout << "No cars found" << endl; //打印结果 imshow("Cars", frame_resized); //输出每帧 continue; //未检测到汽车,继续循环 } else { cout << cars.size() << " car(s) found" << endl; //打印结果 // imshow("Cars", frame_resized); } //绘制识别到小车的红色矩形 for (auto elem : cars) { Rect car_roi; //矩形大小位置 car_roi.x = elem.x; car_roi.y = elem.y; car_roi.width = elem.width; car_roi.height = elem.height; rectangle(frame_resized, Point(car_roi.x,car_roi.y), Point(car_roi.x + car_roi.width, car_roi.y + car_roi.height), Scalar(127,0,255),2);//绘制矩形 imshow("Cars", frame_resized); //显示最终结果 } } return 0; }
车辆识别视频



