delphi11 opencv Haar
时间: 2023-06-30 07:12:05 浏览: 108
以下是一个 Delphi11 中使用 OpenCV 进行 Haar 特征检测的示例代码:
```
uses
..., cvtypes, cvimgproc, cvhighgui, cvhaartraining;
procedure DetectHaarFeatures(const Image: IplImage);
var
Cascade: CvHaarClassifierCascade;
Storage: PCvMemStorage;
Faces: CvSeq;
FaceRect: TCvRect;
i: Integer;
begin
// 加载 Haar 特征分类器
Cascade := cvLoad('haarcascade_frontalface_alt.xml', nil, nil, nil);
// 分配内存
Storage := cvCreateMemStorage(0);
// 检测人脸
Faces := cvHaarDetectObjects(Image, Cascade, Storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(50, 50));
// 在图像中标记人脸
for i := 0 to Faces.total - 1 do
begin
// 获取人脸区域
FaceRect := PCvRect(cvGetSeqElem(Faces, i))^;
// 在图像中绘制矩形
cvRectangle(Image, cvPoint(FaceRect.x, FaceRect.y), cvPoint(FaceRect.x + FaceRect.width, FaceRect.y + FaceRect.height), CV_RGB(255, 0, 0), 2, CV_AA, 0);
end;
// 显示图像
cvNamedWindow('Haar Features Detection', CV_WINDOW_NORMAL);
cvShowImage('Haar Features Detection', Image);
cvWaitKey(0);
// 释放内存
cvReleaseHaarClassifierCascade(Cascade);
cvReleaseMemStorage(@Storage);
end;
```
调用 `DetectHaarFeatures()` 函数并传入需要检测的图像,函数会自动检测图像中的人脸并在图像中标记出来。请注意,此代码仅用于演示,实际应用中需要根据具体情况进行修改和优化。
阅读全文