C# 使用opencv从图片识别人脸示例

1.用chatgpt帮我写了一个示例

cs 复制代码
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.如何提高人脸识别的精确度

看来想简单使用这些前沿技术,应用到实际项目中也没有那么容易 。

通过改参数,看看结果是高了还是低了,来决定最终的参数。

相关推荐
潇潇云起2 分钟前
mapdb
java·开发语言·数据结构·db
prettyxian4 分钟前
【QT】信号与槽基础:手动连接的原理与实践
开发语言·qt
傻乐u兔6 分钟前
C语言初阶————结构体
c语言·开发语言
weixin_445054726 分钟前
力扣热题52
开发语言·python
逑之9 分钟前
C语言笔记2:C语言数据类型和变量
c语言·开发语言·笔记
何中应11 分钟前
@Autowrited和@Resource注解的区别及使用场景
java·开发语言·spring boot·后端·spring
源代码•宸11 分钟前
Golang语法进阶(Context)
开发语言·后端·算法·golang·context·withvalue·withcancel
一条咸鱼_SaltyFish12 分钟前
[Day16] Bug 排查记录:若依框架二次开发中的经验与教训 contract-security-ruoyi
java·开发语言·经验分享·微服务·架构·bug·开源软件
源代码•宸13 分钟前
Golang语法进阶(Sync、Select)
开发语言·经验分享·后端·算法·golang·select·pool
sali-tec13 分钟前
C# 基于OpenCv的视觉工作流-章8-形态学
人工智能·深度学习·opencv·算法·计算机视觉