1.用chatgpt帮我写了一个示例
using System;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;class Program
{static void Main(string[] args){// 加载人脸分类器CascadeClassifier faceCascade = new CascadeClassifier("haarcascade_frontalface_default.xml");// 加载图像Image<Bgr, byte> image = new Image<Bgr, byte>("image.jpg");// 将图像转为灰度图Image<Gray, byte> grayImage = image.Convert<Gray, byte>();// 人脸检测var faces = faceCascade.DetectMultiScale(grayImage, scaleFactor: 1.1, minNeighbors: 5, minSize: new Size(30, 30));// 在图像中绘制检测到的人脸foreach (var face in faces){image.Draw(face, new Bgr(0, 255, 0), 3);}// 展示结果CvInvoke.Imshow("人脸识别", image);CvInvoke.WaitKey(0);}
}
2.手工安装所需要包
需要安装Emgu.CV(编译时用)和Emgu.CV.runtime.windows(运行时用,不然会报缺少dll)
DllNotFoundException: Unable to load DLL 'cvextern' or one of its dependenci
3.测试结果
准备https://codeload.github.com/opencv/opencv/zip/refs/tags/4.8.0 解压后需要这个文件D:\\test\\opencv-4.8.0\\data\\haarcascades\\haarcascade_frontalface_default.xml
准备一张图片 有人脸的image.jpg。
运行:
还多了2个框。怎么办呢?
还有的图片没有检测出来,怎么办呢?
4.如何提高人脸识别的精确度
看来想简单使用这些前沿技术,应用到实际项目中也没有那么容易 。
通过改参数,看看结果是高了还是低了,来决定最终的参数。