人脸识别C语言代码
时间: 2023-07-09 10:23:41 浏览: 126
以下是一个简单的 C 语言人脸识别代码示例,同样使用了 OpenCV 和 Haar 级联分类器:
```c
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main(int argc, char **argv) {
// 加载 Haar 级联分类器
CvHaarClassifierCascade *face_cascade = (CvHaarClassifierCascade*)cvLoad("haarcascade_frontalface_default.xml", 0, 0, 0);
// 打开摄像头
CvCapture *capture = cvCaptureFromCAM(0);
// 创建窗口
cvNamedWindow("face_detection", CV_WINDOW_AUTOSIZE);
while (1) {
// 获取帧
IplImage *frame = cvQueryFrame(capture);
// 将帧转换为灰度图像
IplImage *gray = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);
cvCvtColor(frame, gray, CV_BGR2GRAY);
// 在灰度图像中检测人脸
CvSeq *faces = cvHaarDetectObjects(gray, face_cascade, cvCreateMemStorage(0), 1.1, 3, 0, cvSize(30, 30));
// 绘制人脸矩形框
for (int i = 0; i < (faces ? faces->total : 0); i++) {
CvRect *r = (CvRect*)cvGetSeqElem(faces, i);
cvRectangle(frame, cvPoint(r->x, r->y), cvPoint(r->x + r->width, r->y + r->height), CV_RGB(0, 255, 0), 2, 8, 0);
}
// 显示结果图像
cvShowImage("face_detection", frame);
// 等待按键
char c = cvWaitKey(10);
if (c == 27) break;
}
// 释放资源
cvReleaseCapture(&capture);
cvDestroyWindow("face_detection");
cvReleaseHaarClassifierCascade(&face_cascade);
return 0;
}
```
同样需要下载并放置在代码同一目录下的是 `haarcascade_frontalface_default.xml` 文件。此外,需要链接 OpenCV 库,编译时可以使用类似下面的命令:
```
gcc -o face_detection face_detection.c `pkg-config --libs --cflags opencv`
```
阅读全文