基于opencv用C/C++的图像识别demo
时间: 2024-01-22 07:03:46 浏览: 30
以下是一个基于OpenCV的C++图像识别demo,可以识别人脸并在人脸处画出矩形框:
```
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
// 加载人脸识别分类器
CascadeClassifier faceClassifier;
if (!faceClassifier.load("haarcascade_frontalface_alt.xml"))
{
printf("Load face classifier failed!\n");
return -1;
}
// 打开摄像头
VideoCapture cap(0);
if (!cap.isOpened())
{
printf("Open camera failed!\n");
return -1;
}
// 循环读取摄像头图像
Mat frame;
while (true)
{
cap >> frame;
if (frame.empty())
{
printf("Get camera frame failed!\n");
break;
}
// 人脸识别
std::vector<Rect> faces;
faceClassifier.detectMultiScale(frame, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
// 在人脸处画出矩形框
for (std::vector<Rect>::iterator it = faces.begin(); it != faces.end(); it++)
{
rectangle(frame, *it, Scalar(0, 0, 255), 2);
}
// 显示图像
imshow("Face Detection Demo", frame);
// 等待按键,按下ESC键退出循环
if (waitKey(30) == 27)
{
break;
}
}
return 0;
}
```
其中,haarcascade_frontalface_alt.xml是OpenCV自带的人脸识别分类器,可以在OpenCV安装目录下的data文件夹中找到。