当前位置: 首页 > news >正文

GO 调用 python3 (基于ubuntu) 实现人脸识别

本次用go 调用python3 足足花了两天的时间

1、go协程中多次调用python函数

(80条消息) Golang协程中调用Python3_可问春风丶的博客-CSDN博客_golang调用python3

2、安装参考的链接

(48条消息) go调用python3:go-python3包的使用_文杰@的博客-CSDN博客_go调用python

3、如何在wsl的中安装ubuntu

Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

操作系统:ubuntu20.04.5 (WSL)

重复的部分我不赘述了。

====================初始化相关工作

ubuntu20.04.5 需要 更新源,升级,并且安装桌面,安装桌面的目的是我在ubuntu下编译文档

sudo apt update
sudo apt-get upgrade
sudo apt install ubuntu-desktop

下载Xming-6-9-0-31-setup.exe,启动Xming

环境变量默认DISPLAY是0.0

vim ~/.bashrc

export DISPLAY=:0.0
source ~/.bashrc

====================下载编译器

GoLand-2022.2.2(linux):goland的编译器

Anaconda3-2020.11-Linux-x86_64(conda很好用不然我ptyhon整了半天很麻烦):安装python3.7,非常的重点只能安装3.7

====================安装过程

conda create -n fs_py37 python=3.7
conda activate fs_py37 :默认3.7为运行环境

export PKG_CONFIG_PATH=/Users/xwj/opt/anaconda3/envs/fs_py37/lib/pkgconfig
go get github.com/DataDog/go-python3 (使用go get的前提是安装了go1.16.xx

sudo apt-get install pkg-config

sudo apt-get install cmake gcc g++   :这个是为了python 安装dlib的库

======================我的项目结构

python的代码==========

import cv2
import face_recognition
def test(xx):
    print("ok   ============================")
    return "hilllllllllllllllll"

def SayHello(xixi):
    #  导入待检测照片
    face_image1 = face_recognition.load_image_file(r"/home/kiki/testdata/images/3.jpg")
    #  进行人脸识别
    face_encoding1 = face_recognition.face_encodings(face_image1)
    #  得到识别数据
    face1 = face_encoding1[0]
    #face2 = face_encoding2[0]
    #  人脸数据比对
    result = face_recognition.compare_faces([face1],face1,tolerance=0.4)
    #  如果结果是同一人显示PASS,否则显示NO
    if result == [True]:
        name = "PASS"
    else:
        name = "NO"
    #  脸部区域绘图
    '''
    for (x1,y1,w1,h1)in face_encoding1:
        img1 = cv2.rectangle(face_image1,(y1,w1),(h1,x1),(255,0,0),2)  # 脸部框图绘制
        cv2.putText(face_image1,name,(y1-10,w1-10),cv2.FONT_HERSHEY_COMPLEX,0.8,(0,255,0),2)
    frame1 = cv2.cvtColor(face_image1,cv2.COLOR_BGR2RGB)
    '''
    #  脸部区域绘图
    print(name)
    #  结果显示
    #cv2.imshow("1",frame1)
    cv2.waitKey(0)

if __name__ == '__main__':
   SayHello("ddd")

安装python是非常麻烦的,尤其是这个库
sudo apt-get install cmake gcc g++  

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple face_recognition
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple dlib
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cmake

go的代码:引用的文档有完整的案例

整个过程痛点,就是安装以及部署以及调试。

为啥要用go + python

主要是速度,开发的稳定性及实现效果的速度,go是稳定担当,python是算法模型的担当。

相关文章:

  • 澳利率攀升,加息步伐将在某个时候放缓
  • AOP实现系统告警
  • Spring Boot集成第三方登录之微博登录
  • 那么我们应该如何优化Youtube的视频呢?
  • 带你秒懂 SSR-服务端渲染
  • MindRecord-Windows下中文路径问题Unexpected error. Failed to open file
  • 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
  • 链表的奇偶重排
  • 华为ENSP网络设备配置实战2(较为复杂的ospf)
  • 干货 | 精准化测试原理简介与实践探索
  • 本周面试经验总结
  • 第二章 初识Linux Shell
  • 案例|航海知识竞赛需求沟通整理
  • 【人工智能】人脸识别系统【实验报告与全部代码】(QDU)
  • shell脚本入门到实战(一)
  • @jsonView过滤属性
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【Linux系统编程】快速查找errno错误码信息
  • Cumulo 的 ClojureScript 模块已经成型
  • k8s 面向应用开发者的基础命令
  • Mybatis初体验
  • Redis字符串类型内部编码剖析
  • Spring声明式事务管理之一:五大属性分析
  • storm drpc实例
  • Vim Clutch | 面向脚踏板编程……
  • 构建工具 - 收藏集 - 掘金
  • 深入浅出webpack学习(1)--核心概念
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 思维导图—你不知道的JavaScript中卷
  • 我看到的前端
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • #pragma data_seg 共享数据区(转)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (独孤九剑)--文件系统
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (三)docker:Dockerfile构建容器运行jar包
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET/C# 使用反射注册事件
  • .net反编译的九款神器
  • @Import注解详解
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ C++ ] STL---stack与queue
  • [ JavaScript ] JSON方法
  • [android] 请求码和结果码的作用
  • [C#] 我的log4net使用手册
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [Codeforces] number theory (R1600) Part.11
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [hive小技巧]同一份数据多种处理