精华内容
下载资源
问答
  • 2.树莓派实现目标检测识别(树莓派4+opencv4.1.1+tensorflow1.14.0+ssd_mobilenet_v1_coco) 目录树莓派安装opencv及tensorflow实现图像识别1. 安装opencv1.1 换源1.2 存储空间的一些说明和操作1.3 增加交换空间1.4 ...

    树莓派安装opencv及tensorflow实现图像识别

    参考:1.树莓派4 安装OPENCV3全过程(各种踩坑和报错)
    2.树莓派实现目标检测识别(树莓派4+opencv4.1.1+tensorflow1.14.0+ssd_mobilenet_v1_coco)

    1. 安装opencv

    1.1 换源

    第一步先更换源,更新下载更快;
    ①在终端输入以下指令

    sudo nano /etc/apt/sources.list
    

    用#注释掉原文件内容,用以下内容取代:

    deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
    

    如图:
    然后ctrl+o保存,点回车确认保存,然后ctrl+x退出
    然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

    ②在终端输入以下指令

     sudo nano /etc/apt/sources.list.d/raspi.list
    

    用#注释掉原文件内容,用以下内容取代:

    deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
    

    如图:
    在这里插入图片描述
    然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

    ③使用命令更新软件源列表,同时检查编辑是否正确。再更新软件

     sudo apt-get update
     sudo apt-get upgrade
    

    1.2 存储空间的一些说明和操作

    建议使用32G以上的内存卡
    扩大文件系统。因为,用SD卡安装完系统后一大部分空间实际是未被分配的
    使用命令

    sudo raspi-config
    

    然后选择第七个
    在这里插入图片描述
    然后选择第一个回车,最后按esc退出
    在这里插入图片描述

    1.3 增加交换空间

    增加交换空间以避免因内存问题导致的编译挂起
    输入命令

    sudo nano /etc/dphys-swapfile
    

    将 CONF_SWAPSIZE 值从默认值更改 100 为 1024 :
    如图
    在这里插入图片描述
    然后ctrl+o保存,点回车确认保存,然后ctrl+x退出,并运行以下命令以使更改生效:

    sudo /etc/init.d/dphys-swapfile restart
    

    1.4 下载工具及包

    ①安装OpenCV的相关工具

    sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
    sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
    sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
    sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
    

    ②创建一个新目录并从 Github 克隆 OpenCV 和 OpenCV contrib 存储库:

    mkdir ~/opencv_build && cd ~/opencv_build
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    

    因为Github服务器不在国内,并且不支持断点续传,如果失败,可以多试几次。
    克隆存储库后,创建一个临时构建目录,然后切换到该目录:

    mkdir -p ~/opencv_build/opencv/build
    cd ~/opencv_build/opencv/build
    

    1.5 设置编译编译参数

    cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=OFF \
        -D OPENCV_GENERATE_PKGCONFIG=ON \
        -D ENABLE_NEON=ON \
        -D ENABLE_VFPV3=ON \
        -D BUILD_TESTS=OFF \
        -D OPENCV_ENABLE_NONFREE=ON \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
        -D BUILD_EXAMPLES=OFF ..
    

    “\” 代表将代码延续到下一行
    输出结果如下所示:

    ...
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/pi/opencv_build/opencv/build
    

    1.6 开始编译

    运行

    make -j4
    

    过程较长,耐心等待。
    编译结束了会出现下面这个结果

    ...
    [100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-arm-linux-gnueabihf.so
    [100%] Built target opencv_python3
    

    成功后安装已编译的 OpenCV 文件:

    sudo make install
    

    时间很快,结果如下

    ...
    -- Installing: /usr/local/bin/opencv_version
    -- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"
    

    最后检查opencv安装成功与否
    C++库:

    pkg-config --modversion opencv4
    

    结果:

    4.1.1
    

    (只要不报错,就问题不大)
    Python库:

    python3 -c "import cv2; print(cv2.__version__)"
    

    结果:

    4.1.1-pre
    

    如果 SD 卡上没有足够的可用空间,请删除源文件:

    rm -rf ~/opencv_build
    

    大量交换使用可能会损坏您的 SD 卡。将交换空间更改回原始大小:

    sudo nano /etc/dphys-swapfile
    

    将 CONF_SWAPSIZE 值改回 100

    保存文件并激活更改:

    sudo /etc/init.d/dphys-swapfile restart
    

    完成。

    2. 树莓派实现目标检测识别

    2.1 安装TensorFlow1.14.0

    首先,安装matplotlib库

    sudo pip install matplotlib
    

    接着,安装一下编译环境

    sudo apt-get install python3-pip python3-dev
    sudo apt install libatlas-base-dev
    

    最后,直接安装TensorFlow

    sudo pip3 install TensorFlow
    

    2.2 API下载

    直接进行git.

    git clone https://github.com/tensorflow/models.git
    

    在这里插入图片描述

    2.3 ssd_mobilenet_v1_coco下载

    模型链接:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

    首先进入目录

    cd models/research/object_detection/models
    

    然后将ssd_mobilenet_v1_coco模型下载下来

    wget download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz
    

    接着进行解压

    tar -xzvf ssd_mobilenet_v1_coco_2018_01_28.tar.gz
    

    在这里插入图片描述

    2.4 Protobuf 安装与配置

    (1)下载
    protobuf下载地址:https://github.com/google/protobuf/releases
    我直接下载的最新版本:protobuf-all-3.11.2.tar.gz

    cd
    wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
    

    在这里插入图片描述
    (2)安装

    tar -xf  protobuf-all-3.11.2.tar.gz          ->解压      
    cd protobuf-3.11.2                           ->进入该文件夹
    ./configure                                  ->执行   
    make                                         ->时间有点长
    make check                                   ->这一步是检查编译是否正确,耗时非常长
    

    如果出现如下结果,可以看到所有的测试用例都PASS了,说明编译正确:
    在这里插入图片描述

    sudo make install  
    sudo ldconfig                                       ->更新库搜索路径,否则可能找不到库文件
    

    (3)配置
    配置的目的是将proto格式的数据转换为python格式,从而可以在python脚本中调用,进入目录models-master/research,运行:

    cd
    cd models/research
    protoc object_detection/protos/*.proto --python_out=.
    

    2.5 测试

    测试代码文件链接:https://pan.baidu.com/s/1jGnOF1s1UAvMTV4w6JW_YQ
    提取码:9p2m
    (FileZilla下载可以直接百度,连接时树莓派和电脑连接同一个WiFi,主机填写树莓派IP地址,在终端输入ifconfig可直接查询,原始密码是:raspberry)

    将测试代码放入models/research/object_detection/models目录中
    在这里插入图片描述
    进入终端,输入下列命令

    cd models/research/object_detection/models
    sudo chmod 666 /dev/video0                         ->要保证摄像头插紧了,不然会报错
    python3 test.py
    

    在这里插入图片描述
    等一会,接着会出现检测对话框,效果如图。
    在这里插入图片描述

    展开全文
  • 前面笔者爬了许多坑安装完了opencv4.1.1(链接...本次主要想实现目标检测,并将其识别出来,接下来一步一步将讲述如何部署tensorflow1.14.0+ssd_mobilenet_v1_coco ...

    前面笔者爬了许多坑终于给树莓派4b安装完了opencv4.1.1树莓派相关(1):树莓派4安装OpenCV4.1.1从零开始全过程
    本次主要想实现目标检测,并将其识别出来,接下来笔者将讲述如何部署tensorflow1.14.0+ssd_mobilenet_v1_coco

    1 准备

    笔记本(笔者没买专用的显示屏)、网线(SSH连接)
    树莓派4b(4G内存版本)、32G的tf卡(安装系统)、树莓派的电源适配器(5V、3A)、树莓派摄像头(笔者的为500万像素)

    2 安装TensorFlow1.14.0

    因为已经安装好了opencv4.1.1,因此直接安装TensorFlow。
    首先,安装matplotlib库

    sudo pip install matplotlib
    

    接着,安装一下编译环境

    sudo apt-get install python3-pip python3-dev
    sudo apt install libatlas-base-dev
    

    最后,直接安装TensorFlow

    sudo pip3 install TensorFlow
    

    这样安装的TensorFlow1.14.0就是当前树莓派能用的最新版本
    在这里插入图片描述
    晚上下载速度有点慢,感觉早上的下载速度能快一点,如果中途掉线就得重复一次命令。
    在安装TensorFlow之后,还会自动安装几个相关的依赖包

    3 API下载

    这里我参考了一篇博客:https://blog.csdn.net/weixin_36259888/article/details/83786113
    然后我直接进行git.

    git clone https://github.com/tensorflow/models.git
    

    当然,该博客也给了github的API链接https://github.com/tensorflow/models/tree/master/research/object_detection/models
    但是我觉得还是还是直接git比较好,以免出现什么幺蛾子。
    在这里插入图片描述

    4 ssd_mobilenet_v1_coco下载

    模型链接https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
    在这里插入图片描述
    首先进入目录

    cd models/research/object_detection/models
    

    然后将ssd_mobilenet_v1_coco模型下载下来

    wget download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz
    

    接着进行解压

    tar -xzvf ssd_mobilenet_v1_coco_2018_01_28.tar.gz
    

    在这里插入图片描述

    5 Protobuf 安装与配置

    这里参考另一篇文章:https://www.jianshu.com/p/ea5abe01aaf1
    (1)下载
    protobuf下载地址:https://github.com/google/protobuf/releases
    我直接下载的最新版本:protobuf-all-3.11.2.tar.gz

    cd
    wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
    

    在这里插入图片描述
    (2)安装

    tar -xf  protobuf-all-3.11.2.tar.gz          ->解压      
    cd protobuf-3.11.2                           ->进入该文件夹
    ./configure                                  ->执行   
    make                                         ->时间有点长
    make check                                   ->这一步是检查编译是否正确,耗时非常长
    

    如果出现如下结果,可以看到所有的测试用例都PASS了,说明编译正确:
    在这里插入图片描述

    sudo make install  
    sudo ldconfig                                       ->更新库搜索路径,否则可能找不到库文件
    

    (3)配置
    配置的目的是将proto格式的数据转换为python格式,从而可以在python脚本中调用,进入目录models-master/research,运行:

    cd
    cd models/research
    protoc object_detection/protos/*.proto --python_out=.
    

    6 测试

    测试代码文件链接:https://pan.baidu.com/s/1jGnOF1s1UAvMTV4w6JW_YQ
    提取码:9p2m

    将测试代码放入models/research/object_detection/models目录中
    在这里插入图片描述
    打开VNC Viewer,进入终端,输入下列命令

    cd models/research/object_detection/models
    sudo chmod 666 /dev/video0                         ->要保证摄像头插紧了,不然会报错
    python3 test.py
    

    在这里插入图片描述
    等一会,接着会出现检测对话框,效果如图
    在这里插入图片描述
    总结:继安装opencv4.1.1之后,本文接着讲述了怎么安装了基于python3.7的TensorFlow1.14.0,同时将API和ssd_mobilenet_v1_coco模型下载下来,然后讲述了怎么配置protobuf,最后成功实现目标检测识别。当然,还得感谢大佬们的帮助,遇到问题多思考,多查阅资料,最后肯定能成功的。

    展开全文
  • 树莓派基于opencv的人脸识别和口罩检测 文章目录学习目标:学习内容:前言一、opencv是什么?二、步骤1.树莓派安装模块安装教程链接:2.设计思路然后注意一下,下面的yml文件,和xml文件,必须都用绝对路径来写!!...

    树莓派基于opencv的人脸识别和口罩检测

    学习目标:

    目标:人脸识别和口罩的检测
    实现的功能:
    1:检测到人脸,画框,并识别已训练的人的模型,并打印出名字
    2:识别是否带了口罩


    学习内容:

    内容:基于python的opencv和face_recognition来实现
    1、 掌握opencv,face_recognition的安装
    2、 掌握 训练模型
    3、 掌握调用模型
    4、 掌握树莓派安装opencv和contrib以及face_recognition



    前言

    打电赛输了,在比赛的几天后一个人做出来,也了解到了硬件的重要性

    一、opencv是什么?

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
    OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。

    二、步骤

    1.树莓派安装模块

    值得一提,我就是安装不上才失败的,因为有的模块需要很大的内存,而树莓派分不出来,所以经常就是安装到99%的时候卡住,然后就是程序已杀死,我心态崩了都!!!!

    安装教程链接:

    1:安装opencv:

    https://zhuanlan.zhihu.com/p/92184435

    2:安装dlib:

    https://blog.csdn.net/weixin_44086593/article/details/87467537

    3:安装face_recognition:

    https://blog.csdn.net/weixin_43106043/article/details/104962026

    4:xml模型的下载:
    链接:https://pan.baidu.com/s/1ULupRUJGRtRRPfLw-Iooyw
    提取码:6zf8

    祝大家成功哈哈哈哈哈

    2.设计思路

    有点长,希望大家不要嫌啰嗦
    1;首先,在多种优秀的人脸识别的方法中,我们还是毅然决然的选择了最为有效,最为方便的python+opencv,因为其有相对应的函数库供我们使用,效果明显,代码简洁。

    2;收集:一开始,因为只需要测试三个队员和其他未知者,所以先通过face_collect.py开始通过电脑内置摄像头对三个队员进行人脸采集,并输入自己的id号和顺序,便于后期的数组遍历寻找匹配对象,加载人脸分类识别器,导入人脸识别的模型找出人脸进行截取,经过测试,由***于彩色的照片会占据大量内存并且受外界干扰明显,所以使用OpenCV调用摄像头获取图像并进行基础的处理(灰度等)转为灰度图片,减少程序符合,提高识别度,特定功能库Dlib进行特征获取,然后以jpg格式保存,并每个人都存储101张在totalfaces的文件中。***

    3;训练:对得到的303张jpg图片,通过python中的os文件处理,PIL以及numpy数据库的结合,再次导入人脸识别模型和输入输出格式的绝对路径的设置,通过遍历照片文件进行对其整体的一个封装,并且保存为以yml为后缀的训练型文件。我们在前一部分的同目录下创建一个Python文件,文件名为trainner.py,用于编写数据集生成脚本。同目录下,创建一个文件夹,名为trainner,用于存放我们训练后的识别器。

    4;测试:由于项目需要实现口罩的检测功能,但是经过查找opencv的API文档,并没有找到针对口罩的识别模型,所以,通过思考和小组讨论,因为口罩主要是掩盖了口鼻,所以以是否检测到下半部分的嘴巴替代,如果检测到嘴巴,并框选出来,则说明并没有佩戴口罩,若没有检测到嘴,则说明有按照防控标准佩戴口罩。LBP是一种特征提取方式,能提取出图像的局部的纹理特征,最开始的LBP算子是在3X3窗口中,取中心像素的像素值为阀值,与其周围八个像素点的像素值比较,若像素点的像素值大于阀值,则此像素点被标记为1,否则标记为0。这样就能得到一个八位二进制的码,转换为十进制即LBP码,于是得到了这个窗口的LBP值,用这个值来反映这个窗口内的纹理信息。LBPH是在原始LBP上的一个改进,在opencv支持下我们可以直接调用函数直接创建一个LBPH人脸识别的模型。就此开始通过face.LBPHFaceRecognizer_create读取前一步的训练模型,定义数组,填入队员姓名,同样的,通过内置摄像头扫出人脸,并转换为灰度,并记录下人脸是识别范围,作为下一步检测嘴的区域范围,进一步缩小工作量,以达到更为准确的识别读取。为了实现检测是否有嘴巴,我们通过len()方法对画出的矩形框进行与0的比较,大于0则打印没带口罩,小于0则打印有带口罩,并通过之前识别的数据,进行格式化输出并打印在对话框中,并在程序最后设置了窗口等待以及键盘控制退出等按钮的设置,以及在左上角设置了相关的fps参数,来显示面部识别的帧数,更加直观的呈现了数据,最后关闭摄像头,并释放窗口。

    代码如下:
    face_collect.py
    这个是收集101张人脸
    **

    然后注意一下,下面的yml文件,和xml文件,必须都用绝对路径来写!!!!!!

    **

    import cv2
    #计数
    count = 0
    #输入id
    face_id = input('\n enter user id:')
    #输入姓名
    username = input('\n enter user name:')
    print('\n 正在初始化脸部识别,请保持在摄像头前面 .......')
    # 读取内置摄像头中的图像,获取图像grabbed为true
    cap = cv2.VideoCapture(0)
    # 加载人脸分类识别器
    face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')#改成这个文件的绝对路径!!!
    
    while True:
        grabbed, img = cap.read()
        # 图片转灰度
        img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        faces = face_detector.detectMultiScale(img_gray,1.3, 5)
        for x, y, w, h in faces:
            cv2.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=1)
            count += 1
            # 保存图像
            ''
            #待处理
            ''
            filename = r"mask_faces/" + username + "." + str(face_id) + '.' + str(count) + '.jpg'
            print(filename)
            #通过绝对路径保存jpg图片
            cv2.imwrite(filename, img_gray[y: y + h, x: x + w])
        #展示
        cv2.imshow("detecting", img)
        #按q退出并保持窗口10s
        if ord('q') == cv2.waitKey(10):
            break
            #若保存了100次,则退出保存程序
        elif count > 100:
            break
    
    #关闭摄像头
    cv2.destroyAllWindows()
    cap.release()
    
    

    face_trainer.py

    将上文收集的jpg图片训练成自己的yml文件

    YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) 一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言就很神奇,收集的人脸会变成一系列数据来使用,并存放在yml文件中

    import numpy as np
    from PIL import Image
    import os
    import cv2
    print("开始")
    # 人脸数据路径
    path = r'total_faces/'
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')#这边建议全部使用绝对路径,确保能够调用的到!
    
    def getImagesAndLabels(path):
        imagePaths = [os.path.join(path, f) for f in os.listdir(path)] 
        faceSamples = []
        ids = []
        for imagePath in imagePaths:
            PIL_img = Image.open(imagePath).convert('L')   # convert it to grayscale
            img_numpy = np.array(PIL_img, 'uint8')
            id = int(os.path.split(imagePath)[-1].split(".")[1])
            faces = detector.detectMultiScale(img_numpy)
            for (x, y, w, h) in faces:
                faceSamples.append(img_numpy[y:y + h, x: x + w])
                ids.append(id)
        return faceSamples, ids
    
    
    print('Training faces. It will take a few seconds. Wait ...')
    faces, ids = getImagesAndLabels(path)
    recognizer.train(faces, np.array(ids))
    #定义训练路径
    recognizer.write(r'face_trainer\trainer.yml')
    print("{0} faces trained. Exiting Program".format(len(np.unique(ids))))
    print('over')
    

    face_main.py

    # 从视频中识别人脸
    import cv2 as cv
    import time
    def face_recognition():
        t_start = time.time()
        fps = 0
        recognizer = cv.face.LBPHFaceRecognizer_create()
        # 读取训练数据
        recognizer.read('G:/python_program/Basement/face_trainer/trainer.yml')  #之前训练的模型
        face_detector = cv.CascadeClassifier(cv.data.haarcascades + 'haarcascade_frontalface_default.xml')  #那个包里面下载的模型
        mouth_detector = cv.CascadeClassifier("G:/haarshare/haarcascade_mcs_mouth.xml")   #嘴巴模型
        #字体
        font = cv.FONT_HERSHEY_SIMPLEX
        feature_id=None
        # 以训练的时候,按人脸id进行排序
        names = [' ','dai jun','li zhi ming','wang fei']  #下角标是从0开始,所以起始插入一个空字符来占位
    
        cap = cv.VideoCapture(0)
        # minW = 0.1*cap.get(3)
        # minH = 0.1*cap.get(4)
    
        while True:
            grabbed, img = cap.read()
            if grabbed:
                print("frame:", img.shape)
            else:
                break
            # 图片转灰度
            img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
            faces = face_detector.detectMultiScale(img_gray)
            for x, y, w, h in faces:
                cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=1)
                # 预测
                feature_id, confidence = recognizer.predict(img_gray[y:y + h, x:x + w])
                print(feature_id-1, " ", confidence)
                # 检查嘴
                # mouth_zone = mouth_detector.detectMultiScale(head_down, 1.3, 3, minSize=(10, 10))
                # 记录下脸部位置,作为识别嘴巴的区域范围
                face_area = img[y:y + h, x:x + w]
                # # 在记录下的脸部区域识别嘴巴
                mouth = mouth_detector.detectMultiScale(face_area,scaleFactor=1.1,minNeighbors=5,minSize=(50, 50))
                print(mouth)
                # 框出嘴巴
                for (mx, my, mw, mh) in mouth:
                    cv.rectangle(face_area, (mx, my), (mx + mw, my + mh), (0, 255, 0), 1)
                #判断是否有嘴巴
                    #问题:如何检测矩形框的有无返回值的方法,如果返回有,则没带口罩,无,则有带
                    if len(mouth) > 0:
                        print(len(mouth))
                        print("没有戴口罩")
                        cv.putText(img, 'no mask', (x-50, y + 200), 3, 1.3, (0, 255, 0), 2)
                    else:
                        pass
                        #cv.putText(img, 'has mask', (x - 50, y + 200), 3, 1.3, (0, 255, 0), 2)
                else:
                    if len(mouth) <= 0:
                        cv.putText(img, 'has mask', (x - 50, y + 200), 3, 1.3, (0, 255, 0), 2)
    
    
                if confidence < 100:
                    features = names[feature_id]
                    print(features)
                    confidence = "{0}%".format(round(100 - confidence))
                else:
                    features = "unknown"
                    confidence = "{0}%".format(round(100 - confidence))
    
                cv.putText(img, str(features), (x + 5, y - 5), font, 1, (0, 255, 0), 4)
                cv.putText(img, str(confidence), (x + 5, y + h - 5), font, 1, (0, 255, 0), 4)
    
            # Calculate and show the FPS
    
            fps = fps + 1
    
            sfps = fps / (time.time() - t_start)
    
            cv.putText(img, "FPS : " + str(int(sfps)), (10, 10), cv.FONT_HERSHEY_SIMPLEX, 0.5, (255,0,0), 2)
    
    
    
            cv.imshow("recognizing", img)
            if ord('q') == cv.waitKey(10):
                break
    
        cv.destroyAllWindows()
        cap.release()
    
    
    if __name__ == '__main__':
        face_recognition()
    

    成果展示

    本人上镜哈哈哈哈哈
    在这里插入图片描述

    总结

    其实这些也都是抄来抄去,改来改去的,懂大概就行了,这个识别度说真的,不咋地,只能拿来骗人哈哈哈,要真拿去用就糗大了哈哈哈哈,主要就是三步走:在这里插入图片描述
    第一次写,就这样啦,比赛是输了,也敲醒了警钟,电子信息专业不会硬件????重新做人


    展开全文
  • 树莓派安装opencv3.4和tensorflow 写在开头 不知道有多少人像我当时刚开始接触树莓派那样,对它怀着满满的期待,将自己的一些厉(奇)害(怪)的想法,已经在电脑上全部实现或部分实现,但项目又和硬件有关,得落地...

    树莓派安装opencv3.4和tensorflow

     

    • 写在开头

            不知道有多少人像我当时刚开始接触树莓派那样,对它怀着满满的期待,将自己的一些厉(奇)害(怪)的想法,已经在电脑上全部实现或部分实现,但项目又和硬件有关,得落地到单片机上,自然而然想到了树莓派,然后开始打开百du,搜搜有没有前人的经验或者教程,再然后,开始按着教程一步一步操作下去......

           我在树莓派上安装opencv的过程中,试过至少四五次的这个过程,换了一个又一个的教程,但无奈出现着一个接一个的bug,一个接一个的坑,然后开始搜解决方案,就这样,一天一天,过了一个周可能连你的树莓派环境都鼓捣不好,这对当时的我而言,是一次一次的期待却又重来,但最终还是失败。

    • 该blog的目的

           写下该blog的目的初衷很简单,想让在这方面的新人少走一些弯路,少一些在前进道路上的打击(大牛且请让道),不再去苦恼的配置你的开发环境,而是直接将在电脑上写好的代码,简单的移植到树莓派上来,将你那宝贵的时间专注与项目设计与优化上,不好吗?

           所以,本着这个目的,我将安装好环境的镜像文件自己整理好了。

    • 最后

           有这方面环境配置需求的就发邮件聊吧,如果你愿意的话,我看到会第一时间回复的。祝你们学业有成,工作顺利!

           邮件:15552542120@163.com,主题备注为:CSDN-Pi-opencv-tf。

    展开全文
  • 先在树莓派上装c++版的opencv,用板子上的csi摄像头采集图像,然后用HOG特征和SVM来检测其中的行人。不知道树莓派算力够吗? 想把这个程序写进去。 ``` #include #include #include <opencv2/core/core.hpp...
  • 计算机视觉中有很多目标检测和识别的技术,这里主要学习三种: 梯度直方图 图像金字塔 滑动窗口 HOG描述符 HOG与之前提到的SURF,SIFT,ORB属于同一类型的描述符。HOG是基于梯度而非颜色来计算直方图。但是这种检测...
  • 基于OPENCV树莓派按键自校正阈值的颜色识别 前言:通过在选定区域内进行色彩的HSV参数识别,可利用按键进行自动的颜色识别的阈值选定,进而通过图形矩的计算得到目标图形的中心点坐标。 本人才疏学浅,还请多多...
  • 神经网络目标检测 神经网络的类型 全连接层神经网络 前向计算简单、梯度求导简单,但参数量大,训练困难 卷积神经网络 利用局部相关性和权值共享思想,在计算机视觉方面...为了实现树莓派的图像识别,暂时只关注...
  • 1、目标识别:通过树莓派上的摄像头模块(Pi Cam)进行颜色识别和形状判断,如果发现绿色的圆,即发现目标,则显示发现目标。 2、完成与STM32的串口通信。 准备工作: 本项目的树莓派图像识别我只是进行了简单的识别...
  • 做一个目标识别(object detection)的项目,当然少不了opencv,鉴于tensorflow开源了objective detection的api,有采用mobilenet的版本,因此这里笔者选择tensorflow的深度学习框架。最后安装的版本为:opencv3.3.0...
  • 目标:用树莓派捕捉来自esp的视频流并进行人脸识别 条件:树莓派4b*1 esp32cam(aithinker) 杜邦若干 步骤: 关键就在于cv2.videoCapture可以抓本地视频文件,网内视频文件,以及其他奇奇怪怪的流协议,但就是抓不了...
  • 计算机视觉是一项应用于计算机模式生物视觉的新技术,它使得计算机能代替人眼实现对目标识别、分类、跟踪和场景理解。 计算机视觉是人工智能的重要分支,是未来发展的前沿科技,所以学习OpenCV这个开源、跨平台...
  • 识别并跟踪红灯,硬件利用树莓派实现。...https://blog.csdn.net/qq_32768679/article/details/84398229(目标识别说明) https://blog.csdn.net/qq_32768679/article/details/84317173(小工具说明)
  • 2.将视频文件发送到我们的树莓派上,然后再利用Python编写程序对视频进行人脸识别处理,最后将人脸识别后的视频保存。 3.对某一张图片进行处理,让其具有毛玻璃效果,并将处理后的图片保存。 接下来就是实际的操作...
  • 目标,在树莓派上建立一个最简单的手写体识别系统。 规划如下: 1 在PC上做使用tensorflow做一个最简单的softmax模型,把模型参数全部保存下来 2 在PC上,使用python读取模型参数,编写模型代码,使用opencv读取...
  • 一 实验目的 通过对图像捕捉和颜色特征提取,了解...3. 颜色特征设定及目标识别 4. 基于颜色特征的应用扩展 三 实验设备 平台一: 树莓派, Linux OS, OpenCV 开发库 平台二: 个人计算机, Linux OS,USB 摄像头...
  • 在开发树莓派智能小车的路上已经走了半年多时间了,起初做了以下简单的远程控制和避障功能,后来慢慢加入黑线循迹以及语音识别,物体识别的功能。前段时间在刷新闻头条的时候,偶然看到一外国大牛做的树莓派目标...
  • 家庭监控、简单神经网络图像分类、深度学习目标分类识别,利用搜索爬虫构建自己的数据集、cnn+kearas目标识别以及实时目标识别等近20个案例源码及讲解,是基于python和opencv入门计算机视觉不可多得资源。
  • 家庭监控、简单神经网络图像分类、深度学习目标分类识别,利用搜索爬虫构建自己的数据集、cnn+kearas目标识别以及实时目标识别等近20个案例源码及讲解,是基于python和opencv入门计算机视觉不可多得资源。
  • 我要识别一个红灯,已经把目标准确的提取出来了,二值图像中白色为目标物,现在要算出二值图中的白色像素点的坐标。因为之后需要移植到树莓派,所以需要高效的方法。 需要找出白色中心点 第一想到的肯定就是...
  • 家庭监控、简单神经网络图像分类、深度学习目标分类识别,利用搜索爬虫构建自己的数据集、cnn+kearas目标识别以及实时目标识别等近20个案例源码及讲解,是基于python和opencv入门计算机视觉不可多得资源。
  • 家庭监控、简单神经网络图像分类、深度学习目标分类识别,利用搜索爬虫构建自己的数据集、cnn+kearas目标识别以及实时目标识别等近20个案例源码及讲解,是基于python和opencv入门计算机视觉不可多得资源。
  • OPENCV3.2中新增加的dnn模块有本人想要使用的demo(使用tensorflow中inception类做目标识别),因此花费三天分别在香蕉派(类似树莓派)和电脑(ubuntu14.04)上配置相关文件。最终成功,在此和大家分享经验,这是...
  • 支持树莓派3B摄像头采集图像,具体参考树莓派3B摄像头安装与测试 gcc g++ opencv cmake的安装(以下所有命令均在设备上操作) $ sudo apt-get update $ sudo apt-get install gcc g++ make wget unzip libopencv-...
  • 覆盆子相机目标识别 使用树莓派相机和mobilenet .h5模型,通过树莓派pi 3 B + / pi 4 B执行对象识别。 该python脚本将.h5文件作为输入,并利用keras API加载Mobilenet模型。 屏幕上将显示摄像机预览,并将每个获取...
  • 从装Python、装OpenCV、入门深度学习,到人脸识别目标检测、语义分割等等各种应用,都有进阶路线,里面包含了教程、案例、注意事项。甚至怎样把算法部署到树莓派之类的硬件上,也能找到经验。 推特发出12小...
  • 板球控制系统pid笔记

    千次阅读 2019-05-22 11:28:10
    图像处理利用了树莓派-OpenCV进行图像处理,将小球坐标进行实时反馈,使小球实际坐标和目标坐标进行对比,对偏差进行pid运算,计算出pwm值从而用来控制舵机。 图像处理的难点在于: (1)怎么读取小球的坐标,可以...
  • 我的是ubuntu16.04版本,GPU2080T台式机,以前已经安装了tensorflow1.13.1GPU版本,而且已经训练好了自己的目标物模型,在树莓派3上使用此模型识别的时候(调用CSI摄像头实时识别,当然这里有很多工作需要做,包括...
  • 学习目标: 下学期课太多,寒假两个月,提前学习一半课程 学习图像识别相关 学习深度学习相关理论 学习内容: 学习英语六级 - 学习python(初步学习到面向对象编程) 学习qt编程 学习树莓派 学习传感器原理 学习...
  • 那么恭喜你,因为现在有一本长达81页的CV成长指南,能给你无微不至的关怀:从装Python、装OpenCV、入门深度学习,到人脸识别目标检测、语义分割等等各种应用,都有进阶路线,里面包含了教程、案例、注意事项。...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
热门标签
关键字:

树莓派opencv目标识别