delphi11 opencv 人脸识别代码
时间: 2023-06-30 20:11:32 浏览: 138
以下是一个简单的 Delphi11 OpenCV 人脸识别代码示例:
```delphi
uses
// OpenCV 相关单元
cvcore, highgui, cvtypes, cxcore;
procedure TForm1.Button1Click(Sender: TObject);
var
Camera: pCvCapture;
Frame: pIplImage;
Storage: pCvMemStorage;
Cascade: pCvHaarClassifierCascade;
Faces: pCvSeq;
i: Integer;
begin
// 打开摄像头
Camera := cvCreateCameraCapture(0);
// 创建窗口
cvNamedWindow('Camera', CV_WINDOW_AUTOSIZE);
// 加载 Haar 分类器
Cascade := cvLoadHaarClassifierCascade('haarcascade_frontalface_default.xml', cvSize(1, 1));
// 创建内存存储器
Storage := cvCreateMemStorage(0);
while True do
begin
// 从摄像头中读取帧
Frame := cvQueryFrame(Camera);
// 如果没有获取到帧,则直接退出
if Frame = nil then
Break;
// 检测人脸
Faces := cvHaarDetectObjects(Frame, Cascade, Storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(50, 50));
// 绘制矩形框
for i := 0 to Faces.total - 1 do
begin
cvRectangle(Frame, cvPoint(Faces.rect[i].x, Faces.rect[i].y), cvPoint(Faces.rect[i].x + Faces.rect[i].width, Faces.rect[i].y + Faces.rect[i].height), CV_RGB(255, 0, 0), 3, CV_AA, 0);
end;
// 显示图像
cvShowImage('Camera', Frame);
// 等待 10 毫秒
if cvWaitKey(10) >= 0 then
Break;
end;
// 释放资源
cvReleaseCapture(Camera);
cvReleaseHaarClassifierCascade(Cascade);
cvReleaseMemStorage(Storage);
cvDestroyWindow('Camera');
end;
```
这个代码通过摄像头获取实时视频帧,并使用 Haar 分类器检测人脸,将检测到的人脸框出来并显示在窗口中。你需要将 `haarcascade_frontalface_default.xml` 文件放在与 Delphi 项目相同的目录下才能正确运行。
阅读全文