使用dlib库从摄像头中取人脸进行人眼检测的c++程序
时间: 2023-02-12 10:57:59 浏览: 104
使用dlib库进行人眼检测需要使用到dlib中的一些函数和类,主要流程如下:
1. 首先需要导入dlib相关的头文件,并且加载人脸检测器和人眼检测器模型。
2. 使用cv::VideoCapture类从摄像头获取视频帧。
3. 对获取到的帧进行人脸检测,使用dlib中的dlib::frontal_face_detector类进行人脸检测。
4. 对检测到的人脸进行人眼检测,使用dlib中的dlib::shape_predictor类进行人眼检测。
5. 在图像中绘制人眼的位置。
6. 使用cv::imshow()显示帧,并使用cv::waitKey()等待用户操作。
下面是一个简单的例子, 可以使用openCV和dlib库进行人眼检测
```c++
#include <dlib/opencv.h>
#include <opencv2/highgui/highgui.hpp>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/render_face_detections.h>
#include <dlib/image_processing.h>
using namespace dlib;
using namespace std;
int main()
{
try
{
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
cerr << "Unable to connect to camera" << endl;
return 1;
}
image_window win;
frontal_face_detector detector = get_frontal_face_detector();
shape_predictor sp;
deserialize("shape_predictor_68_face_landmarks.dat") >> sp;
while(!win.is_closed())
{
cv::Mat temp;
if (!cap.read(temp))
{
break;
}
cv_image<bgr_pixel> cimg(temp);
std::vector<rectangle> faces = detector(cimg);
std::vector<full_object_detection> shapes;
for (unsigned long i = 0; i < faces.size(); ++
阅读全文