水印第四版 ~ 非人水印(添加人脸识别)
demo:https://github.com/dunitian/DNTLive/tree/master/Software/WaterMarkAPP/LoTWaterAPP
说起这个人脸识别,还真有点缘分。记得逆天以前在学生时代参加创新大赛的时候,题目就是人脸识别打卡 解决别人替人打卡的问题,想想看,要是用微软的faceapi那还不是很容易实现的?
好了,不扯淡了,上次概述了下水印情缘:http://www.cnblogs.com/dunitian/p/6232074.html
一张图概括:
额,这次先看下效果,然后普及一些开发过程中的知识点,然后介绍一下微软的FaceAPI
==》原来的功能依旧在,非人脸识别,请在消息框中选择否
不要求人脸识别的就选否,每个月Api次数是有限的
先生成缩略图:(后期可以添加缩略比例的调节)
异步的方式开始干活了
好了之后会通知你(很多人用异步的方式不会捕获异常和完成后的通知,一会我稍微说一下)
看看人脸,免费版的精度这个地步已经很好了(19个脸就2张有点误差),要是你把他用来人脸打卡,完全可以允许的嘛,没识别出来再试一试就ok了
点开一张看看,其实还是挺明显的(网上的face api基本上都是对正脸识别比较好,侧脸就差很多,微软的这个算不错的了【之前微软不是有两款小游戏很火嘛,就是用的人脸识别】)
上面演示部分结束了,我们进入技术探讨环节(技术有什么不到位的或者还有什么更好方案的。还望同志们提点一下,小子勇于接受批评)
先说下,设置超时时间,异常处理
完成后的通知其实也很简单:
有人可能会说:Task.Factory.StartNew 和 Task.Run 一样不?Run就是第一种方式,只不过自动添加了一些默认参数
再说下Magick,之前说了水印的用法:http://www.cnblogs.com/dunitian/p/5895133.html
这次基本上用法全了,缩略图,裁剪,水印
裁剪官方文档没有说,我是根据命令逆推的==》写了个demo:https://github.com/dunitian/TempCode/tree/master/2016-12-26/MagickTest
生成缩略图很简单:
水印官方写的很详细:
-------------------------------------------------------------------------------------------------
一下不管这个了,说说人脸识别,之前不知道官方有sdk,自己封装了。一起看看吧,有利于理解官方sdk:
首先定义了一个人脸识别的专用异常类:(别问我为啥不直接用Exception,不知道百度下~)
下面进行场景还原,为什么这样封装,很多人不写方法,直接贴代码,看的容易晕
然后是Model,我这边没高兴封装脸部关键点,需求决定一切(我只要面部矩阵),如果是Face++就得自己算了
微软返回结果是这个:
那model自然就得这么封装了
注意处理一下每个字段的负数情况(后面计算是可能为负的)
下面就是核心代码:(我这边分了网页URL和本地图片路径,SDK好像统一用流的方式)
为什么我分两种情况,看这两张图就能理解:
根据要求进行封装:
看代码:
下面就是响应了
太多,我就不贴了,看对应代码:(微软的提示是英文的,我得简单封装下)
调用就不用说了吧:await FaceHelper.GetFaceModelList(path) or FaceHelper.GetFaceModelList(path).Result
微软的api很简单,eg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private static async Task<IEnumerable<Face>> UploadAndDetectFaces( string imageFilePath) { try { using (Stream imageFileStream = File.OpenRead(imageFilePath)) { var faceClient = new FaceServiceClient(FaceHelper.GetAPIKey()); return await faceClient.DetectAsync(imageFileStream); } } catch (FaceAPIException ex) { throw ex; } } |
先这样吧,WPF不是很擅长,凑合着用吧~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异