精华内容
下载资源
问答
  • 一、到github上面查找中文资料,然后查看树莓派安装教程 https://github.com/ageitgey/face_recognition 树莓派安装的教程路径是下面这个(中间有些地方和我不一样,我照这个链接,没成功过,安装那个face_rec网速...

                                                 首先是face_recognition安装

    一、到github上面查找中文资料,然后查看树莓派安装教程

    https://github.com/ageitgey/face_recognition

    树莓派安装的教程路径是下面这个(中间有些地方和我不一样,我照这个链接,没成功过,安装那个face_rec网速太慢,根本没下载下来过)

    https://gist.github.com/ageitgey/1ac8dbe8572f3f533df6269dab35df65

    二、需要更正的步骤

    1、libatlas-dev 无法候选,这里安装替换的 libatlas-base-dev

    2、dlib安装按照例子如下,但是这里需要更改

     

    我是按照这样安装,网上查资料听说这个版本才般配

    sudo pip3 install dlib==19.7.0

    然后直接开始安装就好了

    sudo pip3 install face_recognition

    三、进行测试face_recognition

    然后按照原链接还原更换交换区大小,不用下载示例代码,我下载了之后好像不能用啥的,你可以参考这个链接直接使用

    https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md

    主要使用就是这句话,中间那个文件夹是你知道的人照片文件夹,名字是图片的文件名,后面那个文件夹放的是你不认识的人的图片,然后会识别出名字并且打印出来,但是经过测试,速度真慢,而且只是单纯的图片识别,你难道不想玩玩在线摄像头实时识别吗?

    face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/

    如果有摄像头的小朋友,可以开始安装openCV开始摄像头识别了。

                                        最后是安装opencv、opencv_contrib

    一、配置树莓派并打开摄像头

    打开摄像头设置,启用摄像头

    sudo raspi-config 

    选择是就好了

    更新树莓派软件

    sudo apt-get update 
    
    sudo apt-get upgrade

    二、安装OpenCV的相关工具

    sudo apt-get install build-essential cmake git pkg-config

    三、安装OpenCV的图像工具包

    sudo apt-get install libjpeg8-dev 
    sudo apt-get install libtiff5-dev 
    sudo apt-get install libjasper-dev 
    sudo apt-get install libpng12-dev 

    四、安装视频I/O包

    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

    五、安装gtk2.0和优化函数包

    sudo apt-get install libgtk2.0-dev
    sudo apt-get install libatlas-base-dev gfortran

    六、下载OpenCV源码

    git clone https://github.com/opencv/opencv.git

    七、下载OpenCV_contrib

    git clone https://github.com/opencv/opencv_contrib.git

    八、安装OpenCV

    // 根据下载的版本而定
    cd opencv
    // 创建release文件夹
    mkdir release
    // 进入release目录下
    cd release
    // cmake读入所有源文件之后,自动生成makefile,复制下面所有(更改第三行的路径),粘贴回车
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/home/pi/software/opencv_contrib/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -DCMAKE_SHARED_LINKER_FLAGS='-latomic' \
    -D BUILD_EXAMPLES=OFF ..
    // 编译(建议 sudo make -j4 速度快呀)
    sudo make -j4
    // 安装
    sudo make install
    //更新动态链接库
    sudo ldconfig
    
    
    

    九、测试代码来了

    https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py

    这个链接,就是测试代码,速度比较快

    import face_recognition
    import cv2
    import numpy as np
    
    # This is a demo of running face recognition on live video from your webcam. It's a little more complicated than the
    # other example, but it includes some basic performance tweaks to make things run a lot faster:
    #   1. Process each video frame at 1/4 resolution (though still display it at full resolution)
    #   2. Only detect faces in every other frame of video.
    
    # PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam.
    # OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this
    # specific demo. If you have trouble installing it, try any of the other demos that don't require it instead.
    
    # Get a reference to webcam #0 (the default one)
    video_capture = cv2.VideoCapture(0)
    
    # Load a sample picture and learn how to recognize it.
    obama_image = face_recognition.load_image_file("obama.jpg")
    obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
    
    # Load a second sample picture and learn how to recognize it.
    biden_image = face_recognition.load_image_file("biden.jpg")
    biden_face_encoding = face_recognition.face_encodings(biden_image)[0]
    
    # Create arrays of known face encodings and their names
    known_face_encodings = [
        obama_face_encoding,
        biden_face_encoding
    ]
    known_face_names = [
        "Barack Obama",
        "Joe Biden"
    ]
    
    # Initialize some variables
    face_locations = []
    face_encodings = []
    face_names = []
    process_this_frame = True
    
    while True:
        # Grab a single frame of video
        ret, frame = video_capture.read()
    
        # Resize frame of video to 1/4 size for faster face recognition processing
        small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
    
        # Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
        rgb_small_frame = small_frame[:, :, ::-1]
    
        # Only process every other frame of video to save time
        if process_this_frame:
            # Find all the faces and face encodings in the current frame of video
            face_locations = face_recognition.face_locations(rgb_small_frame)
            face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)
    
            face_names = []
            for face_encoding in face_encodings:
                # See if the face is a match for the known face(s)
                matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
                name = "Unknown"
    
                # # If a match was found in known_face_encodings, just use the first one.
                # if True in matches:
                #     first_match_index = matches.index(True)
                #     name = known_face_names[first_match_index]
    
                # Or instead, use the known face with the smallest distance to the new face
                face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
                best_match_index = np.argmin(face_distances)
                if matches[best_match_index]:
                    name = known_face_names[best_match_index]
    
                face_names.append(name)
    
        process_this_frame = not process_this_frame
    
    
        # Display the results
        for (top, right, bottom, left), name in zip(face_locations, face_names):
            # Scale back up face locations since the frame we detected in was scaled to 1/4 size
            top *= 4
            right *= 4
            bottom *= 4
            left *= 4
    
            # Draw a box around the face
            cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
    
            # Draw a label with a name below the face
            cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
            font = cv2.FONT_HERSHEY_DUPLEX
            cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
    
        # Display the resulting image
        cv2.imshow('Video', frame)
    
        # Hit 'q' on the keyboard to quit!
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # Release handle to the webcam
    video_capture.release()
    cv2.destroyAllWindows()
    //下载一下奥巴马和拜登两个人的照片各一张放到路径下
    python3 python3 facerec_from_webcam_faster.py

    这里没有屏幕的兄弟姐妹们,下载个Xmanager,然后就可以了,会显示一个图相框来,我这里识别王力宏和蒲巴甲

    测试图片

    十、测试demo下载

    速度还比较快速,比直接对比两张图片快得多,demo下载的路径是这个

    https://github.com/ageitgey/face_recognition

    我用的那个网络摄像头识别实时视频中的人脸,更快的版本,大家装好了以上三个,就可以开启自己人脸识别旅程了。

    打赏二维码,多谢支持

     

    展开全文
  • 树莓派实现人脸识别打卡门禁系统

    千次阅读 多人点赞 2019-09-23 08:29:05
    树莓派实现人脸识别打卡系统的构建背景功能硬件效果源码摄像头测试代码录入信息人脸识别结论 背景 源于实习公司的人脸识别打卡系统,完成之前的项目后正好没有事情干,于是想到了这个,公司的这个打卡系统操作流程...

    用树莓派实现人脸识别打卡门禁系统的构建

    背景

    源于实习公司的人脸识别打卡系统,完成之前的项目后正好没有事情干,于是想到了这个,公司的这个打卡系统操作流程是这样的,首先用手机把你的人脸录进去,要求绕头半圈,也就是右脸,正脸,左脸,然后你再去摄像头那里,识别到你后就会帮你把门打开,顺便帮你在钉钉上打卡。

    功能

    我做的是简易版,实现了这个打卡系统的主要功能,能完成:信息录入,正脸识别,开门关门,名字与时间的保存。

    硬件

    树莓派一个,摄像头一个,显示屏一个

    效果

    并没有打马赛克,文件大小还被限制了,大家将就着看,
    这是在电脑上的效果:
    在这里插入图片描述
    在树莓派上效果:
    在这里插入图片描述
    打卡记录:
    在这里插入图片描述
    看起来效果还是不错的

    源码

    源码使用的电脑上的源码,其实是差不多的,路径不一样而已
    如果树莓派打不开摄像头,参考这个:
    https://www.jianshu.com/p/5653b2b7248c
    代码注释很全,不详细解释

    摄像头测试代码

    import cv2
    
    capCamera = cv2.VideoCapture(0)
    if(not capCamera.isOpened()):
        print("can't open this camera")
        exit(0)
    
    capCamera.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
    capCamera.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
    
    while(True):
        # handle for the camera
        ret, frame = capCamera.read()
        if ret == True:
            cv2.imshow('camera',frame)
        else:
            break
    
        # handle for the video
    
        # handle for exit
        if (cv2.waitKey(1)) == ord('q'):
            break
    
    capCamera.release()
    cv2.destroyAllWindows()
    

    录入信息

    import cv2
    import os
    
    #config
    add_name = 'xiaoming'#要录入的人名
    
    
    target_dir = './pic_dir/{}/'.format(add_name)
    if os.path.exists(target_dir) is False:
        os.makedirs(target_dir)
    
    def generate():
        face_cascade = cv2.CascadeClassifier('.\cascades\haarcascade_frontalface_default.xml')
        #打开摄像头
        camera = cv2.VideoCapture(0)
        forword_count = 0
        #正脸采集,一共20张图片
        while (forword_count <= 20):
            ret, frame = camera.read()
            #转化为灰度图像,用来检测人脸
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
            faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    
            for (x, y, w, h) in faces:
                #画出预测框
                cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
    
                f = cv2.resize(gray[y:y + h, x:x + w], (200, 200))
                #保存录入的图片
                cv2.imwrite('./pic_dir/{0}/{1}.png'.format(add_name, forword_count), f)
                print(forword_count)
                forword_count += 1
            #展示图片
            cv2.imshow("camera", frame)
            #一秒钟24帧
            if cv2.waitKey(1000 // 24) & 0xff == ord("q"):
                break
    
        camera.release()
        cv2.destroyAllWindows()
    
    
    if __name__ == "__main__":
        generate()
    

    人脸识别

    import os
    import sys
    import cv2
    import numpy as np
    import time
    
    def change_door(open_later_time,isOpen,new_face_position):
        if len(new_face_position) > 0 and isOpen == False:
            print('打开')
            isOpen = True
        if len(new_face_position) == 0 and isOpen == True:
            open_later_time += 1
        else:
            open_later_time = 0
        if open_later_time == 100:
            open_later_time = 0
            print('关闭')
            isOpen = False
        return open_later_time,isOpen,new_face_position
    
    def read_images(path, sz=None):#给一个地址,返回训练集
        c = 0
        X, Y = [], []
        names = []
        for dirname, dirnames, filenames in os.walk(path):#目录,子目录,子文件(只限一层目录)
            for subdirname in dirnames:
                names.append(subdirname)
                subject_path = os.path.join(dirname, subdirname)
                for filename in os.listdir(subject_path):#遍历每个名字
                    try:
                        if (filename == ".directory"):
                            continue
                        filepath = os.path.join(subject_path, filename)
                        im = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)
                        if (im is None):
                            print("image " + filepath + " is none")
                        else:
                            print(filepath)
                        if (sz is not None):
                            im = cv2.resize(im, (200, 200))
    
                        X.append(np.asarray(im, dtype=np.uint8))
                        Y.append(c)
                    except IOError:
                        print("I/O error({0}): {1}".format(IOError.errno, IOError.strerror))
    
                    except:
                        print("Unexpected error:", sys.exc_info()[0])
    
                        raise
                print(c)
                c = c + 1
    
        print(Y)
        print(names)
    
        return [X, Y], names
    
    
    def face_rec():
        image_dir = './pic_dir_1'
        isOpen = False
        open_later_time = 0
    
        [X, Y] , names = read_images(image_dir)
        Y = np.asarray(Y, dtype=np.int32)
    
        model = cv2.face.LBPHFaceRecognizer_create()
    
        model.train(np.asarray(X), np.asarray(Y))
        camera = cv2.VideoCapture(0)
        camera.set(cv2.CAP_PROP_FRAME_WIDTH, 400)
        camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 350)
        face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
        re_count = 0
        old_face_position = {}#用来绘制预测框
        new_face_position = {}#用来收集新数据
        while (True):
            #print(old_face_position)
            #print(new_face_position)
            re_count += 1
            read, img = camera.read()
            faces = face_cascade.detectMultiScale(img, scaleFactor =1.3, minNeighbors=5)
            #print('{}的类型{}'.format(faces, type(faces)))
            for (x, y, w, h) in faces:
                gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
                roi = gray[x:x + w, y:y + h]
                try:
                    roi = cv2.resize(roi, (200, 200), interpolation=cv2.INTER_LINEAR)
                    #print(roi.shape)
                    params = model.predict(roi)
                    #print("Label: %s, Confidence: %.2f" % (params[0], params[1]))
                    new_face_position[names[params[0]]] = (x, y, w, h)
                except:
                    continue
    
            #优化用户体验
            #采集三帧的人脸识别信息,将预测框画出,预测框三帧一刷新,防止预测框频繁抖动的现象
            if re_count == 3:
                re_count = 0
                #print(new_face_position)
                if len(new_face_position) > 0:
                    for key in new_face_position.keys():
                        (x, y, w, h) = new_face_position[key]
                        if old_face_position.__contains__(key) is False:
                            img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
                            cv2.putText(img, key, (x, y - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)
                            old_face_position[key] = (x, y, w, h)
                        else:
                            (o_x, o_y, o_w, o_h) = new_face_position[key]
                            if abs((o_x-x)) <= 5 and abs((o_y-y)) <= 5:
                                img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
                                cv2.putText(img, key, (x, y - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)
                                old_face_position[key] = (x, y, w, h)
                else:
                    old_face_position = {}
                new_face_position = {}
            else:
                for key in old_face_position.keys():
                    (o_x, o_y, o_w, o_h) = old_face_position[key]
                    img = cv2.rectangle(img, (o_x, o_y), (o_x + o_w, o_y + o_h), (255, 0, 0), 2)
                    cv2.putText(img, key, (o_x, o_y - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)
    
            #开关门模拟和保存打卡信息
            #如果检测到人,并且门没有开,则打开门,并且录入信息
            if len(new_face_position) > 0 and isOpen == False:
                print('开门')
                #保存打卡信息
                t = time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time()))
                with open('jilu.txt', 'a') as file:
                    file.writelines('{},{}\n'.format(new_face_position.keys(),t))
                isOpen = True
            #如果没有检测到人,并且门开了,计数器+1,否则计数器为0
            if len(new_face_position) == 0 and isOpen == True:
                open_later_time += 1
            else:
                open_later_time = 0
            #当计数器为100的时候关门
            if open_later_time == 100:
                print('关门')
                isOpen = False
                open_later_time = 0
    
            cv2.imshow("camera", img)
            #树莓派最好将帧数设为最大,不然看起来不舒服
            if cv2.waitKey(1000 // 25) & 0xff == ord("q"):
            #if cv2.waitKey(1000 // 25) & 0xff == ord("q"):
                break
        cv2.destroyAllWindows()
    
    
    if __name__ == "__main__":
        face_rec()
    

    结论

    在电脑上运行的很流畅,在树莓派上运行的话因树莓派而异,能明显感觉到帧数下降,不过基本功能还是能完成的

    展开全文
  • 树莓派4b之初学者入门人脸识别(手把手完整版)

    千次阅读 多人点赞 2020-04-06 01:36:29
    本文将从硬件和软件出发,手把手与大家分享如何用树莓派实现人脸识别,包括人工智能环境的搭载,硬件配置,模型训练,程序部署。 硬件工具准备: 32G内存卡 树莓派4B 电源 摄像头 读卡器 屏幕(这个也可以用远程...

    前言:

    树莓派的性能日益强大,树莓派4b相比上一代的能有了很大的提升,采用了博通最新的BCM4908 64bit处理器,内存从1G升级到2G和4G,视频支持4K,价格依旧美丽。本文将从硬件和软件出发,手把手与大家分享如何用树莓派实现人脸识别,包括硬件配置环境搭载代码详解程序部署

    硬件工具准备:

    • 32G内存卡
    • 树莓派4B
    • 电源
    • 摄像头
    • 读卡器
    • 屏幕(这个可以用远程代替)

    软件工具准备:

    • Win32DiskImager
    • 镜像包

    环境

    • opencv4.2.0
    • python3.7.3

    【硬件配置】

    • 树莓派:相比上一代树莓派,树莓派4B在性能各方面有了很大的提升,强烈推荐,本文采用树莓派4B2G版。
    • 摄像头:本文采用某宝购买的树莓派非原装摄像头,20多元,原装摄像头太贵了,不推荐购买,土豪随意。
    • 屏幕:分辨率1024*600,可触屏

    在这里插入图片描述

    一、烧录镜像和环境配置

    镜像烧录传送门:树莓派4b之镜像烧录(手把手完整版)

    这里采用的是opencv4.2.0,其安装方式有两种:

    1、采用已经安装好opencv的镜像进行烧录

    • 镜像过几天打包后分享出来

    2、自己进行安装或编译安装

    二、代码详解

    1、基础知识

    • 以下代码是基于Haar+Cascade分类器实现人脸识别

    相关课程请参看慕课课程:OpenCV+Tensorflowr入门人工智能图像处理
    可在B站上搜寻观看,也可通过百度网盘下载后观看(包括源码)

    下载链接:https://pan.baidu.com/s/1ZZgXih-4AsQOrbHVW74k5Q
    提取码:xwlp

    相关理论基础可观看章节:

    相关笔记请查看简书:犬夜叉写作业

    对于初学者,建议抽空把整个课程看一下,能有所收获

    2、相关代码及其详细注释

    '''
    Haar Cascade Face detection with OpenCV  
        Based on tutorial by pythonprogramming.net
        Visit original post: https://pythonprogramming.net/haar-cascade-face-eye-detection-python-opencv-tutorial/  
    Adapted by Marcelo Rovai - MJRoBot.org @ 7Feb2018 
    '''
    
    import numpy as np
    import cv2
    #导入opencv内部已经训练好的人脸模型
    faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
    #打开摄像头,并设置窗口大小
    cap = cv2.VideoCapture(0)
    cap.set(3,640) # set Width
    cap.set(4,480) # set Height
    
    #进行人脸识别
    while True:
        ret, img = cap.read()   #读取摄像头采集到的图片
        #img = cv2.flip(img, -1)   #将摄像头180旋转,摄像头倒放的时候需要
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  #将读取的图片转换为灰度图
        faces = faceCascade.detectMultiScale(
            gray,
            
            scaleFactor=1.2,
            minNeighbors=5
            ,     
            minSize=(20, 20)
        )   #采用Haar+Cascade分类器进行脸部识别
    
        for (x,y,w,h) in faces:    #将识别到的人脸用蓝色框框出来,x:横坐标;y纵坐标;w:宽度;h:高度(即(x,y):表示画蓝色框的起点;w,h表示蓝色框的长和宽)
            cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
            roi_gray = gray[y:y+h, x:x+w]
            roi_color = img[y:y+h, x:x+w]
           
        cv2.imshow('video',img) #显示到屏幕上
        k = cv2.waitKey(30) & 0xff
        if k == 27: # 按'ESC'退出摄像头
            break
    
    cap.release()   #释放摄像头
    cv2.destroyAllWindows()   #关闭窗口

    三、代码部署和运行

    将以上代码写入成文件,命名为face.py
    我已经写好了,可以在这里下载:

    链接:https://pan.baidu.com/s/1AEdGP2svw7B-mBPVNM1rGQ
    提取码:h96w

    可以先用电脑下载下来,再远程拷贝进树莓派里面

    里面的haarcascade_frontalface_default.xml也要下载下来

    进入树莓派/home/pi/Downloads,这个目录可以随意,看你想把程序放在哪里了

    cd /home/pi/Downloads

    face.pyhaarcascade_frontalface_default.xml同时拷贝进去,这样就部署完成了

    在这里插入图片描述

    输入以下代码运行程序:

    #要进入文件所在位置,才能找到文件
    cd /home/pi/Downloads  
    #运行程序
    python3 face.py

    运行成功!!!

    在这里插入图片描述

    展开全文
  • 子豪兄github链接 用树莓派4b构建深度学习应用(opencv)

    一、风扇与散热片安装

    散热片安装位置与风扇接线方式如图所示:
    在这里插入图片描述

    二、系统安装

    1、从树莓派国内的清华源镜像下载系统的安装包,我使用的是2020-02-13-raspbian-buster-full.zip,这也是最后一代的raspbian系统,解压生成.img后缀文件。
    2、准备好SD卡与读卡器,如果是新的SD卡就不用刷系统了,如果是用过的需要刷一下系统。在这里插入图片描述
    3、安装烧录工具Etcher
    首先把FT卡插入读卡器中,并接到电脑的USB接口,打开烧录工具(Etcher),如下图所示,按照步骤进行即可。
    在这里插入图片描述

    • 因为树莓派系统目前已经禁用了ssh服务,所以如果要使用ssh的话,需要在TF卡根目录新建一个空白目录,目录名为ssh,注意没有任何后缀。

    • 在根目录下新建一个名为“wpa_supplicant.conf”的空白文件,并添加以下内容(不包括注释部分):

      country=CN
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      network={
          ssid="目标Wi-Fi名称"	#注意区分大小写
          psk="目标Wi-Fi密码"	#注意区分大小写
      }
      

    三、SSH与VNC

    • 树莓派地址获取:在命令行输入ifconfig命令即可获取当前树莓派的IP地址,或者联网之后鼠标停在网络设置位置就可以看到自己树莓派的主机号,我的是172.20.10.7
    • 树莓派默认的用户名:pi,密码:raspberry

    1、SSH

    (1)树莓派开启ssh服务
    输入树莓派配置命令sudo raspi-config 进入配置界面,将选中条选择到9 Advanced Options(上下键移动选中条),回车。选中“A4 SSH”,回车,然后通过选中“Yes”(左右键移动选中条)来开启SSH服务。
    在这里插入图片描述
    (2)在电脑下载安装“putty”,完成后打开软件,弹出配置界面,在主机名(Host Name)中输入树莓派对应IP地址、端口号,点击打开(弹出安全警告选择是)。
    在这里插入图片描述

    2、VNC

    (1)树莓派开启VNC
    输入树莓派配置命令sudo raspi-config 进入配置界面,将选中条选择到5 Interfacing Options(上下键移动选中条),回车。选中“P3 VNC”,回车,然后通过选中“Yes”(左右键移动选中条)来开启VNC服务。
    在这里插入图片描述
    在树莓派中断输入vncserver
    (2)电脑端开启VNC服务
    在自己电脑上下载VNC Viewer,输入树莓派IP端口号默认为1,之后输入自己的主机号,账号和密码就可以开启。
    在这里插入图片描述

    在这里插入图片描述
    设置开机自启动

    	sudo nano /etc/init.d/vncserver
    

    复制进去

    	#!/bin/sh
    	### BEGIN INIT INFO
    	# Provides: tightvncserver
    	# Required-Start: $syslog $remote_fs $network
    	# Required-Stop: $syslog $remote_fs $network
    	# Default-Start: 2 3 4 5
    	# Default-Stop: 0 1 6
    	# Short-Description: Starts VNC Server on system start.
    	# Description: Starts tight VNC Server. Script written by James Swineson.
    	### END INIT INFO
    	# /etc/init.d/tightvncserver
    	VNCUSER='pi'
    	case "$1" in
    	        start)
    	                su $VNCUSER -c '/usr/bin/vncserver :1'
    	                echo "Starting VNC Server for $VNCUSER"
    	        ;;
    	        stop)
    	                su $USER -c '/usr/bin/vncserver -kill :1'
    	                echo "VNC Server stopped"
    	        ;;
    	        *)
    	                echo "Usage: /etc/init.d/vncserver {start|stop}"
    	                exit 1
    	        ;;
    	esac
    	exit 0
    

    保存
    修改文件权限

    	sudo chmod 755 /etc/init.d/vncserver
    	sudo update-rc.d vncserver defaults
    

    如果要取消开机启动,则:

    	sudo update-rc.d -f tightvncserver remove
    

    四、opencv的安装与人脸检测

    1、树莓派扩容
    输入树莓派配置命令sudo raspi-config 进入配置界面,将选中条选择到9 Advanced Options(上下键移动选中条),回车。选中“A1 Expand”,回车,然后通过选中“Yes”(左右键移动选中条)来进行扩容。
    2、换成清华大学源
    首先执行sudo nano /etc/apt/sources.list,之后按照清华源的说明做就行,之后用’ # '备注以前的最后加新的然后 ctrl+o ctrl+x,最后执行sudo nano /etc/apt/sources.list.d/raspi.list
    3、下载opencv依赖的库文件
    可以使用df -h查看剩余的磁盘空间

    sudo apt-get install build-essential cmake git pkg-config
    sudo apt-get install libjpeg8-dev
    sudo apt-get install libtiff5-dev
    sudo apt-get install libjasper-dev
    sudo apt-get install libpng12-dev
    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
    sudo apt-get install libgtk2.0-dev
    sudo apt-get install libatlas-base-dev gfortran
    

    4、opencv下载
    (1)下载离线文件,并传输至树莓派进行解压
    opencv下载,选择source文件
    opencv_contrib下载,选在zip文件

    缺失文件下载,3.4.6与4.1.0含有缺失文件
    链接: https://pan.baidu.com/s/1MMssaWZESNPeyeTTirF_Bw
    提取码: qemx

    使用scp命令进行传输,输入命令后,会提示输入密码

    scp D:\code\face.zip pi@172.20.10.7:/home/pi
    

    (2)进行安装

    • 新建一个opencv文件夹,并将生成的文件解压到其中。
      在这里插入图片描述
    • 进入文件夹,并新建一个release文件cd ~/Opencv/opencv-3.4.6
      新建release文件夹mkdir release进入release文件夹cd release
    • 设置cmake编译参数,注意第5航自己的路径
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-3.4.6/modules \#这一行
    -D BUILD_EXAMPLES=ON \
    -D WITH_LIBV4L=ON \
    -D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \
    -D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \
    -D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
    
    • 补充缺失
      把文件夹 boostdesc_bgm.i,vgg_generated_48.i等 里的所有文件都拷贝到(4.1.0一样免的缺失报错)
      opencv_contrib-3.4.6/modules/xfeatures2d/src/
      在这里插入图片描述
    • 编译
    sudo make -j4 2>&1 | tee make.log
    

    会出现多次报错
    在这里插入图片描述
    通常都是这一个错误因为头文件路径不对,解决方法就是找到有错误引用的源文件进行修改。这部分可以查看博客进行解决

    • 安装
    sudo make install
    

    (3)人脸识别进行验证

    import cv2
    #找一个图片重命名为img,与程序文件放在一个文件夹下(要有人脸啊)
    img = cv2.imread('/home/pi/face/1.jpg',1)
    #这里要改用你的绝对路径
    face_engine = cv2.CascadeClassifier('/home/pi/opencv/opencv-3.4.6/data/haarcascades/haarcascade_frontalface_default.xml') 
    faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)
    for (x,y,w,h) in faces:
        img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    得到结果:
    在这里插入图片描述

    展开全文
  • 树莓派4B-Python-四种人脸检测/人脸识别

    千次阅读 多人点赞 2020-08-30 14:15:30
    本人目前用树莓派4B仅了解到了人脸检测的四种方法: 使用OpenCV 使用OpenMV 利用百度智能云的人脸识别 使用face recognition库 树莓派4B-Python-人脸检测文章目录关于人脸检测前言一、OpenCV二、OpenMV1.引入库2....
  • 一:人脸识别(身份认证) dlib + face_recgnition (最后放弃了,但记录下,毕竟折磨了我好几天) (我的pi在数据大的情况下,检测一张照片用了80s+,就直接放弃了,不过他似乎可以优化,待我回头有空再回来...
  • 树莓派上安装open cv以及人脸识别依赖库等。最终实现嵌入式人脸识别
  • 基于树莓派人脸识别门禁系统(python+OpenCV+PyQt)

    千次阅读 多人点赞 2019-08-20 16:29:15
    硬件:树莓派3B+ 镜像系统:2019-04-08-raspbian-stretch-full.img 软件:python2.7+OpenCV3.4.0+PyQt5 HDMI显示屏:10.1寸、分辨率1280*800 注:本来搭建OpenCV环境和PyQt5的时候是按照python3.5来的,开发到...
  • 年前的时候就有这个想法,想做一个能够人脸识别和物体识别,并且能简单对话识别指令的助手,类似小爱同学离线增强版,顺便能监控自己的小屋。 不过年底太忙根本没有时间精力去折腾,想着年初再搞,谁知道来了个疫情...
  • 树莓派4B爽上流安装python3+OpenCV(人脸检测识别—门禁“环境搭建篇”一、前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 一、前言 在上一篇帖子树莓派4无痛安装OpenCV+python3中,详细介绍 从零开始的...
  • 使用树莓派和arduino组合形成的人脸识别门禁系统源码,两者用usb连接,舵机采用SG90,内含演示视频
  • 基于树莓派人脸识别门禁系统

    千次阅读 2020-10-26 15:59:11
    摄像头+mjpg-streamer的配置 sudo apt-get install libjpeg8-dev #JPEG支持库 sudo apt-get install imagemagick sudo apt-get install libv4l-dev #4l是小写"L" sudo apt-get install cmake #下载编译工具 ...
  • 树莓派制作人脸识别详细教程

    千次阅读 2019-07-04 15:42:18
    1. 配置并更新树莓派系统 sudo raspi-config // 进入后打开摄像头、SSH sudo apt-get update sudo apt-get upgrade sudo rpi-update 2. 安装OpenCV的相关工具 sudo apt-get install build-essential cmake ...
  • 人脸识别大家并不陌生,在树莓派上进行人脸识别的教程已经有不少了,所以本文就不上传代码了。跟着网上的教程弄完之后我发现树莓派的运算能力很差,显示人脸的时候图像都会卡,就更别提识别了。 后来我想可以把...
  • 本文主要介绍的是利用树莓派4B和百度AI组成的智能打卡系统,使用的是百度AI的人脸识别模块,通过其提供的SDK(c++ v3版)来调用的百度AI。 所需硬件:树莓派4b及其配套的HDMI屏幕。 所需软件:Qt、mysql、opencv、...
  • 树莓派 人脸识别——从小白到大白 @。@初探树莓派系统拷入一些问题人脸识别yolov3结果 初探树莓派 这是大鱼的第一篇博客,唉唉,客官留步!!!! 系统拷入 一些问题 人脸识别 作为一个小白,我带着我炽热的心,滚过...
  • 树莓派4B-简单的人脸检测

    千次阅读 2020-02-23 19:45:25
    整了一天,终于把树莓派的网络,软件这些整好了,不容易,现在来写写代码试试。 1.获取摄像头数据 我的摄像头是和买树莓派时一起买的,官方原装摄像头。相关驱动应该在厂家提供的版本中就是直接装好了,没费啥力,...
  • 因此我开源了一个树莓派人脸识别+活体检测的库,在2800+人脸数据的情况下能达到20FPS左右的人脸检测,人脸识别,以及活体检测。 二、介绍 本项目用的是ncnn来作为推理框架部署模型,主要用到的模型有 人脸检测: ...
  • 上一篇:树莓派4B远程控制 目录 一、配置树莓派摄像头  1.1、usb摄像头配置   1.1.1、将usb摄像头连接到树莓派   1.1.2、升级系统   1.1.3、打开系统配置Camera   1.1.4、操作摄像头  1.2、官方摄像头配置...
  • 绪论 AI背景 表情识别介绍 平台选用 表情识别模型的研究 分类模型resnet 普通分类模型 部署流程及结果 ...树莓派的环境配置 结果与问题 总结与展望 中期成果总结 疑问 目标和展望 ...
  • 一、树莓派第一次开机 二、系统设置  2.1、方法一:图形界面设置  2.2、方法二:命令行设置   2.2.1、Change User Password   2.2.2、Localisation Options   2.2.3、Interfacing Options   2.2.4、...
  • 树莓派基于opencv的人脸识别和口罩检测 文章目录学习目标:学习内容:前言一、opencv是什么?二、步骤1.树莓派安装模块安装教程链接:2.设计思路然后注意一下,下面的yml文件,和xml文件,必须都用绝对路径来写!!...
  • 树莓派4B人脸识别,出现module ‘cv2.cv2’ has no attribute 'face’ 解决:不能直接pip3 install opencv-python 和 pip3 install opencv-contrib-python 解决方案: 1.首先:sudo pip3 install -i ...
  • 目录基于树莓派4B和Python语言的人脸识别预警项目(天网追逃小demo)设计背景天网监控系统人脸识别追逃设计要求技术路线功能设计方案设计软硬件需求硬件需求软件需求系统环境 基于树莓派4B和Python语言的人脸识别预警...
  • 3)人脸识别。 提前安装好cv2 python 1人脸检测 人脸识别的最基础任务是「人脸检测」。你必须首先「捕捉」人脸(第 1 阶段)才能在未来与捕捉到的新人脸对比时(第 3 阶段)识别它。 最常见的人脸检测方式是使用...
  • 树莓派利用python、opencv识别人脸,替换后可识别其它物体。
  • opencv人脸识别3.1 正文3.2 踩坑(回应题目)3.2.1 关于API3.2.2 关于安装依赖包4. opencv+udp人脸实时识别 0. 安装opencv 当然之前已经安装好了opencv,详情见我的上一篇文章: 树莓派4学习记录(4)-摄像头 1. ...
  • 正好手里有个树莓派4B,可以搭建一个简易版本的口罩识别系统,下面将我的实验过程一步步与大家分享。 口罩模型介绍 PyramidBox-Lite是基于2018年百度发表于计算机视觉顶级会议ECCV 2018的论文PyramidBox而研发的轻量...
  • 树莓派4B价格好!

    千次阅读 2020-08-17 16:41:23
    9元 具备前后各 30W 像素摄像头,3.5 寸TFT 电容触摸显示屏, 是一款能够进行多媒体音视频处理 AI 开发板,其搭载的 KPU(神经网络处理器) 算力理论高达 1TOPS ,用户可使用其快速进行人脸识别、物体分类等多种 AIoT ...
  • 树莓派4B+口罩人脸+人流量计数+web页面1. Raspbian-lite 烧录及配置1.1. 烧录工具下载1.2. 烧录1.3. 无键盘屏幕WiFi配置1.4. 无键盘屏幕开启 ssh1.5. 开启摄像头1.6. 开启蓝牙2.换源2.1. 备份原文件2.2. 修改 `/etc/...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 289
精华内容 115
关键字:

树莓派4b人脸识别