码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • go使用dlib人脸检测和人脸识别


    一、安装go-face库

          准备好环境,需要下载go-face库:

    go get -u -f  github.com/Kagami/go-face

    官方源码路径

    https://github.com/Kagami/go-face

    二、安装dlib库

          安装这个库挺费时间的,比编写go代码还要长,目前 作者的环境是windows 10, 64位环境。

    1、下载MSYS2,是一款高效专业的类似于linux的开发环境软件,该软件基于Cygwin和MinGW-w64的MSYS进行重写,集合了丰富实用的工具组件。下载地址为MSYS2

    2、安装此软件,安装成功后,在windows的“开始”菜单,选择MSYS2 MSYS。

    3、在MSYS2超级终端里,输入pacman -Syu,如果提示关闭,就关闭。

    4、再执行第二步,重新输入pacman -Syu

    5、然后输入,pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-dlib,至此你已成功安装了dlib了。

    6、如果您已经安装了Go和Git,而且想在MSYS2超级终端使用GO和GIT命令,需要修改msys2_shell.cmd文件,搜索“rem set MSYS2_PATH_TYPE=inherit”,然后修改为set MSYS2_PATH_TYPE=inherit,保存即可。

    7、从“开始”菜单,选择并运行MSYS2 MinGW x64,然后进入你的例子代码路径,输入go build main.go编译即可。

    三、模型下载

    下载地址 http://dlib.net/files/

     下载三个模型

    shape_predictor_5_face_landmarks.dat

    dlib_face_recognition_resnet_model_v1.dat

    mmod_human_face_detector.dat

    OpenCV人脸识别xml文件.zip
    zip 0星 超过10%的资源 969KB
    下载

    四、准备好gocv环境

    安装的教程如下:

    gocv-go语言调用opencv入门_xinlinhack的博客-CSDN博客_go opencv

    使用gocv,更好的处理图片。

    五、示例代码

    单一人脸:

    多人脸图片:

    java人脸识别源代码
    rar 0星 超过10%的资源 14.40MB
    下载

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/Kagami/go-face"
    5. "gocv.io/x/gocv"
    6. "image"
    7. "image/color"
    8. "log"
    9. "path/filepath"
    10. )
    11. //
    12. const (
    13. dataDir = "models"
    14. imageDir = "images"
    15. )
    16. func main() {
    17. // 特征值
    18. var descriptor face.Descriptor
    19. // 目标距离
    20. matchDistance := 0.1
    21. // 创建一个窗口
    22. window := gocv.NewWindow("dlib Recognize")
    23. defer window.Close()
    24. // 颜色
    25. greenColor := color.RGBA{0, 255, 0, 255}
    26. redColor := color.RGBA{255, 0, 0, 255}
    27. // 加载模型
    28. rec, err := face.NewRecognizer(dataDir)
    29. if err != nil {
    30. log.Fatal(err)
    31. }
    32. defer rec.Close()
    33. // 单一脸图片
    34. faceImagePath := filepath.Join(imageDir, "face.jpg")
    35. img1 := gocv.IMRead(faceImagePath, gocv.IMReadColor)
    36. defer img1.Close()
    37. fmt.Println("正在读的单一脸图像 = ", faceImagePath)
    38. //
    39. faces, err := rec.RecognizeFile(faceImagePath)
    40. if err != nil {
    41. log.Fatalf("无法识别: %v", err)
    42. }
    43. if 0 == len(faces){
    44. log.Fatal("图片没有人脸")
    45. }
    46. for _, f := range faces{
    47. descriptor = f.Descriptor
    48. }
    49. // 多人脸图片
    50. facesImagePath := filepath.Join(imageDir, "faces.jpg")
    51. img2 := gocv.IMRead(facesImagePath, gocv.IMReadColor)
    52. defer img2.Close()
    53. // copy bg to draw
    54. background := img2.Clone()
    55. defer background.Close()
    56. //
    57. fmt.Println("正在读的多人脸图像 = ", facesImagePath)
    58. //
    59. faces, err = rec.RecognizeFile(facesImagePath)
    60. if err != nil {
    61. log.Fatalf("无法识别: %v", err)
    62. }
    63. if 0 == len(faces){
    64. log.Fatal("图片没有人脸")
    65. }
    66. for _, f := range faces{
    67. gocv.Rectangle(&background, f.Rectangle, redColor, 3)
    68. // 计算特征值之间的欧拉距离
    69. dist := face.SquaredEuclideanDistance(f.Descriptor, descriptor)
    70. fmt.Println("欧拉距离 = ", dist)
    71. c := redColor
    72. if dist < matchDistance {
    73. c = greenColor
    74. }
    75. // 在图片上画人脸框
    76. pt := image.Pt(f.Rectangle.Min.X, f.Rectangle.Min.Y-20)
    77. gocv.PutText(&background, "jay", pt, gocv.FontHersheyPlain, 2, c, 2)
    78. }
    79. // 显示图片
    80. window.IMShow(background)
    81. for{
    82. if window.WaitKey(1) >= 0 {
    83. break
    84. }
    85. }
    86. }

    最终输出如下,绿色表示找到的人脸图片。

    代码下载:go的dlib例子代码-深度学习文档类资源-CSDN下载

  • 相关阅读:
    Linux权限介绍
    基于PyTorch机器学习与深度学习实践应用与案例分析
    暑期JAVA学习(38.2)线程的生命周期
    MySQL 索引失效的几种类型以及解决方式
    英码科技受邀亮相2023WAIE物联网与人工智能展,荣获行业优秀创新力产品奖!
    线程协作(生产者消费者模式)
    ImageDecoder解码GIF、ImageView显示GIF
    基于springboot实现酒店管理系统平台项目【项目源码+论文说明】计算机毕业设计
    ESP8266-Arduino编程实例-PCF8591数据采集驱动
    【知识图谱论文】视觉语境对知识图谱真的有帮助吗?表征学习视角
  • 原文地址:https://blog.csdn.net/xinlinhack/article/details/126277824
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号