关键词:
OpenCvSharp是OpenCv的包装器,相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现,所以,从OpenCv的知识架构来讲,源码是一样一样的。就是换个语言写而已。
1. OpenCvSharp 尽可能地以原生 OpenCV C/C++ API 风格为蓝本。
2. OpenCvSharp 的许多类都实现了 IDisposable。无需管理不安全的资源。
3. OpenCvSharp 不会强迫您使用面向对象的编程风格。您还可以调用原生风格的 OpenCV 函数。
4. OpenCvSharp 提供了从转换Mat为Bitmap(GDI+) 或WriteableBitmap(WPF) 的函数。
所以,只要想学OpenCv,那就可以以原OpenCv的代码方式用.NET 来进行实现。
我早就想识别人脸,最好能识别我是谁,最好能把家里的小猫,也识别了,爽歪歪,最近去了一趟水世界,人家都是摄像头识别人脸,只用提交一张自拍照就可以了,而OpenCv肯定是能达到这种效果的,当然,我还在学习中,先试试识别人脸的效果。
我是台式机,也没有摄像头,突发奇想,能不能连上我的手机(安卓)来实现摄像头的效果,经过不断尝试,终于达到了目的,也算是有一个不错的效果。
手机支持Web摄像头
网上搜了很多资料,最后找到了这个好用的视频工具 DroidCam ,它分为两个端,一个是手机端,一个是PC端,这样QQ就可以用PC端的驱动来实现PC的摄像头效果。
但是,主要是靠手机端,因为,有了手机端,本身它就有了WebCamera的功能,其中像海康这种网络摄像头,都是有RTSP协议的,也是可以用的。
可以网上搜相关资源,也可以下载我提供的资源(我提供的是DroidCamX版本呦 支持720和1080清晰度呦)
安装后效果
手机端是这个样子的,直接运行起来就好,还有一些相关的设置,可以自行设置
电脑端是这个样子的
连上手机后
效果还是很明显
Web直接打开
地址大概是: http://192.168.1.3:4747/video
也可以通过 http://192.168.1.3:4747 打开
我这里是乱码了,但是,可以点一下
就可以通过Web的方式来实现对摄像头的相关设置。这样也就不用客户端了。
OpenCvSharp 摄像头人脸识别
主要是通过以下两个Nuget
Install-Package OpenCvSharp4.Windows -Version 4.6.0.20220608
Install-Package OpenCvSharp4.Extensions -Version 4.6.0.20220608
人脸识别模型库
人脸识别模型库是从官网下载的
地址如下:
https://codeload.github.com/opencv/opencv/zip/refs/tags/4.6.0
在这个目录下
人脸识别相关业务逻辑
static void Main(string[] args)
Mat frame = new Mat();
var Capture = new VideoCapture("http://192.168.1.3:4747/video?1280x720"); // 这里是DroidCam手机端的IP地址和端口号 ?1280x720
Console.WriteLine($"摄像头是否打开:Capture.IsOpened()");
//声明窗口
Cv2.NamedWindow("video", WindowFlags.KeepRatio);
Cv2.ResizeWindow("video", 1280, 720);
//加载人眼、人脸模型数据
CascadeClassifier faceFinder = new CascadeClassifier(@"haarcascades\\haarcascade_frontalface_default.xml");
CascadeClassifier eyeFinder = new CascadeClassifier(@"haarcascades\\haarcascade_eye_tree_eyeglasses.xml");
var Count = new ConcurrentDictionary<long, int>();
long PreviousTime = 0;
long FPS = 0;
while (true)
bool res = Capture.Read(frame);//会阻塞线程
if (!res || frame.Empty())
continue;
var times = GettimeStamp();
if (PreviousTime != times && Count.ContainsKey(times - 1))
PreviousTime = times;
FPS = Count[times - 1];
Console.WriteLine($"每秒处理图片:FPS帧");
Count.AddOrUpdate(times, 1, (k, v) => v + 1);
Cv2.PutText(frame, $"FPS", new Point(10, 70), HersheyFonts.HersheyPlain, 4, new Scalar(0, 0, 255), 3);
//进行检测识别
Rect[] faceRects = faceFinder.DetectMultiScale(frame);
Rect[] eyeRects = eyeFinder.DetectMultiScale(frame);
//如果有检测到,就绘制结果到图像上
if (faceRects.Length > 0)
Cv2.Rectangle(frame, faceRects[0], new Scalar(0, 0, 255), 3);
if (eyeRects.Length > 1)
Cv2.Rectangle(frame, eyeRects[0], new Scalar(255, 0, 0), 3);
Cv2.Rectangle(frame, eyeRects[1], new Scalar(255, 0, 0), 3);
//显示结果
Cv2.ImShow("video", frame);
Cv2.WaitKey(1);
//省略几个以加快图像的速度
Capture.Grab();
Capture.Grab();
Capture.Grab();
Capture.Grab();
Capture.Release();
//销毁所有的窗口
Cv2.DestroyAllWindows();
Console.WriteLine("录制完毕!");
Console.ReadLine();
public static long GettimeStamp()
return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
运行结果
哈哈,算是露脸了,我这脸可是有版权的呦!!!
总结
效果还是很不错的,终于算是入手OpenCv了,后期的各种技巧和书籍就可以学起来了。最好,以后可以通过一张图片,就能识别到对方是谁,这样的应用场景应该很多,我之前公司的门禁都是统一拍照发照片搞定的。
但是,具体人脸咋搞一个数据出来,还得继续搞搞。
代码地址(包含了DroidCamX 相关工具)
https://github.com/kesshei/CameraDemo.git
https://gitee.com/kesshei/CameraDemo.git
阅
一键三连呦!,感谢大佬的支持,您的支持就是我的动力!
人脸识别介绍
...特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别人脸识别流程人... 查看详情
如何使用地标点识别人脸?
】如何使用地标点识别人脸?【英文标题】:HowcanIrecognizeafaceusinglandmarkspoints?【发布时间】:2018-06-2606:18:13【问题描述】:我正在使用Eigenface算法进行人脸识别。但我需要使用面部各部分的距离或计算值之类的东西来识别面部。... 查看详情
Apple Vision Framework 识别人脸
】AppleVisionFramework识别人脸【英文标题】:AppleVisionFrameworkIdentifyface【发布时间】:2018-11-0213:01:18【问题描述】:AppleVisionFramework中是否可以比较面孔并识别该人是否在图片中与该人的参考图像进行比较?类似于Facebook人脸识别。... 查看详情
如何在没有训练的情况下识别人脸
】如何在没有训练的情况下识别人脸【英文标题】:Howtorecognizefaceswithouttraining【发布时间】:2020-02-1922:24:17【问题描述】:我正在构建一种“人员计数器”,它可以从实时视频片段中获取人脸图像。如果在某个帧中检测到新人... 查看详情
HMAX模型中C2层后使用osusvm识别人脸
】HMAX模型中C2层后使用osusvm识别人脸【英文标题】:UsetheosusvmtorecognizefacesaftertheC2layerinHMAXmodel【发布时间】:2014-01-2213:59:52【问题描述】:我实现了原始HMAX模型的计算,得到了C2层的结果。现在我仍然有调整层,换句话说,可以... 查看详情
刷脸背后:人脸检测人脸识别人脸检索_张重生资料整理
人脸识别是当今热门的研发方向,在安防、金融、旅游等领域具有十分广泛的应用。本书全面、系统地介绍“刷脸”背后的技术,包括人脸检测、人脸识别、人脸检索相关的算法原理和实现技术。本书中讲解的算法具... 查看详情
如何从视频中识别人脸识别中的未知人?
】如何从视频中识别人脸识别中的未知人?【英文标题】:Howtoidentifyunknownpersonsinfacerecognitionfromvideos?【发布时间】:2017-08-2811:28:29【问题描述】:我正在使用PhilippWagner的视频中的面部识别,我更新了代码以使用opencv3.2,之后我... 查看详情
人脸识别人脸识别损失函数学习笔记
目录一、sphereface:A-Softmax(CVPR2017)1.1传统的softmaxLoss(第二章中有更详细的公式解释):1.2sphereface对softmax进行了两点改进:1.3sphereface弊端二、CosFace(CVPR2018)1softmaxloss的不同变种1.1原始的softmaxloss:1.2归一化s 查看详情
人脸识别的人像处理流程是怎样的?
...。1、采集与检测人脸图像无论是何种人脸图像都能通过摄像头采集下来,例如提取照片中的头像、动态头像、不同表情、不同位置等等都可以很好地采集下来。当被采集人员在设备自动搜索的范围内,设备就可自动搜索并完成... 查看详情
机器学习原来如此有趣:用深度学习识别人脸
本系列文章目前已经更新两期,分别是: 机器学习原来如此有趣!全世界最简单的机器学习入门指南、 机器学习原来如此有趣:如何故意欺骗神经网络 你是否有注意到Facebook最近开发了一个非同寻常的功能:将你照... 查看详情
中科院deepmind联手,用深度学习揭示大脑如何识别人脸|nature子刊
...科学研究所联手了。他们用无监督深度学习揭示出大脑识别人脸的机制。具体来说,大脑会把面部特征分解成一些语义特征,如年龄、性别或是否在微笑,而且是单个神经元对应某个具体特征。△图源MartaGarnelo此外... 查看详情
opencvjava入门一在mac系统上安装opencv
...显示显示人脸就说入门了。没有一个从安装、使用、驱动摄像头、训练模型、辩别人脸的全过程。最夸张的是连怎么安装个OpenCV的资料网上的都不全。本篇会连续以几篇篇幅带各位入门并以最终识别人脸为全博客结束标志。读完... 查看详情
图像处理项目——制作自己的人脸数据集(代码片段)
...脸照片 一:主要步骤1、加载人脸检测器2、打开电脑摄像头,载入视频流,抽取帧,进行灰度化处理3、识别人脸,采集20张保存到文件中二:代码1/****************************************************2制作自己的人脸数据集:31、加载人脸... 查看详情
androidapp实战项目之使用opencv人脸识别实现找人功能(附源码和演示超详细)(代码片段)
...;指认结果多有出入,算不上什么先进。如今利用监控摄像头结合机器学习算法,大大提高了人脸识别的成功率,使得人脸识别真正应用到了日常生活中。从住宅小区的刷脸开门,到工作单位的刷脸考勤,到超... 查看详情
学习笔记tf058:人脸识别
...基于人脸部特征信息识别身份的生物识别技术。摄像机、摄像头采集人脸图像或视频流,自动检测、跟踪图像中人脸,做脸部相关技术处理,人脸检测、人脸关键点检测、人脸验证等。《麻省理工科技评论》(MITTechnologyReview),201... 查看详情
使用分类器进行面部识别的迁移学习
...题描述】:我想知道是否可以使用Inception或ResNet模型来识别人脸。我想知道迁移学习和培训对我的任务是否重要。我只想能够识别人脸,但我也很好奇是否可以为我的任务重新训练/优化预训练模型。还是我读错了;我是否需要... 查看详情
基于人脸识别的人脸考勤机实现(训练测试部署)(代码片段)
...硬件:Windows10或11(无需GPU)或MacOS都测试可行普通RBGUSB摄像头二、软件:Python:3.7opencvDlib二、用法:使用pythondemo_full.py--参数名=参数值-h,--helpshowthishelpmessageandexit--modeMODE运行模式:reg,recog对应:注册人脸、识别人脸--idID人脸ID... 查看详情
刷脸认证怎么操作?
打开手机,点击刷脸认证,把脸放在摄像头前面。按提示眨眨眼,摇摇头或是张张嘴就可以了。然后你就会收到认证成功,如果不成功,重新再来一次。参考技术A您好,这个非常简单,就是打开刷脸验证,然后自己找一个光线... 查看详情