0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

opencv庫幾個內置函數(shù)的功能和使用

lhl545545 ? 來源:達爾聞說 ? 作者:達爾聞說 ? 2022-09-09 10:16 ? 次閱讀

本次分享的是一個可以用于畢業(yè)設計參考的人臉識別項目,由FJNUThomas分享。如果有做人臉識別畢設的同學,可以在此基礎上,做更深入的研究,源碼下載方式見文末。下面是設計步驟: 硬件及環(huán)境:

樹莓派3B V1.2

攝像頭羅技C170

樹莓派系統(tǒng):bullseye

python 3.9.2

opencv-python 4.5.3.56

opencv-contrib-python 4.5.3.56

numpy 1.21.0

關于樹莓派安裝opencv的步驟,可以參考下面這篇博文:

https://blog.csdn.net/m0_46190150/article/details/121501093

人臉檢測

我們實現(xiàn)人臉識別的前提事件是人臉檢測,只有檢測到人臉,才能夠收集到人臉的數(shù)據(jù)。我們用的是opencv自帶的分類器:

haarcascade_frontalface_default.xml
代碼實現(xiàn):

importcv2faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')cap=cv2.VideoCapture(0)        cap.set(3, 640)  # set Weightcap.set(4,480)#setHeight        while True:            ret, img = cap.read()            img = cv2.flip(img, 1) #如果攝像頭倒置,將1改成-1            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)            faces = faceCascade.detectMultiScale(gray,                scaleFactor=1.2,minNeighbors=5,                minSize=(20, 20)                )
            for (x, y, w, h) in faces:                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 for quit                break        cap.release()        cv2.destroyAllWindows()
python3下運行如上代碼可以完成人臉檢測的功能。

圖像采集

人臉識別的本質其實就是構建一個人臉信息的數(shù)據(jù)庫,電腦比對攝像頭采集到的人臉信息和數(shù)據(jù)庫中存放的數(shù)據(jù),從而得到一個比對的結果。 圖像采集需要我們在.py文件同目錄下新建一個文件夾,用于存放采集得到的圖片。

mkdir data
采集得到的圖片越多,構建的數(shù)據(jù)庫越完善,判斷成功的概率也越高,但圖片太多同樣會降低比對時的速度。 我這里是設置了每0.2s拍一張照片,按ecs或拍滿40張照片時退出。

k = cv2.waitKey(200) & 0xff  # ESC退出and每0.2s拍一張            if k == 27:                break            elif count >= 40:  # 拍40張照片                break
圖像采集示例(這邊需要我們在終端輸入id號,我這邊輸入4) 59fb2b8a-2f77-11ed-ba43-dac502259ad0.png 采集得到的圖片: 5a330ee2-2f77-11ed-ba43-dac502259ad0.png

開始訓練

訓練是opencv人臉識別的重中之重。opencv為我們提供了多個內置函數(shù),調用這些函數(shù)能夠幫助我們訓練得到自己的訓練集這邊我采用的是:

 recognizer.train()
在開始訓練之前,我們需要新建一個空目錄用于存放得到的模型:

mkdir trainer
模型保存為.xml文件,要注意我們的代碼是在樹莓派下跑的,在樹莓派下recognizer.write()是不能夠使用的,因此我們用:

recognizer.write('trainer/trainer.yml')
進行保存,訓練成功實例 5aa15776-2f77-11ed-ba43-dac502259ad0.png ?

人臉識別

通過了前三個步驟,我們已經(jīng)有了一個在data文件夾中保存采集到的圖像、在trainer文件夾中保存自己訓練的trainer.xml模型的文件了,我們就進入到了最后一步,也就是傳說中的人臉識別了。人臉識別實例: 可以看到,系統(tǒng)識別出我有73%的概率是彭于晏,識別的成功率還是很高的、關于輸出名字的問題,在代碼的這個部分:

  id = 0  names = ['None', 'pengyuyan', 'xsy', 'rhy']
我們可以在這里修改成自己想要的名字,在代碼中還有這樣的部分:

id,confidence=recognizer.predict(gray[y:y+h,x:x+w])#判斷成功概率>45時,輸出id,否則輸出unknowif(confidence
 用于修改自己想要的判斷概率。 到這里我們的人臉識別就基本完成了。

總結

通過本項目,可以獲得以下技能:

學會樹莓派的配置,并在樹莓派上配置了環(huán)境

對opencv庫有了個基本的了解,熟悉幾個內置函數(shù)的功能和使用

Linux有了更深刻的理解

增加了python能力

不足之處: 在調試的過程中,發(fā)現(xiàn)在樹莓派上運行項目還是有比較明顯的卡頓的,因此有對代碼進行優(yōu)化的想法,查閱資料以后了解到了有一個東西叫做pypy,嘗試過用pypy對文件進行編碼,奈何寫的代碼是基于python3.9,和當前的pypy版本不太匹配,只好暫時作罷。在之后應該會嘗試進行一次重新編譯,感興趣的同學可以嘗試看看。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209521
  • 函數(shù)
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62622
  • 人臉識別
    +關注

    關注

    76

    文章

    4012

    瀏覽量

    81907
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41352

原文標題:畢業(yè)設計| 樹莓派與OpenCV實現(xiàn)人臉識別

文章出處:【微信號:達爾聞說,微信公眾號:達爾聞說】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Vivado設計流程分析 Vivado HLS實現(xiàn)OpenCV的開發(fā)流程

    處理的幾個基本步驟,完成從OpenCV設計到RTL轉換綜合的開發(fā)流程。 開源計算機視覺 (OpenCV) 被廣泛用于開發(fā)計算機視覺應用,它包含2500多個優(yōu)化的視頻函數(shù)
    發(fā)表于 04-23 11:32 ?5884次閱讀
    Vivado設計流程分析 Vivado HLS實現(xiàn)<b class='flag-5'>OpenCV</b>的開發(fā)流程

    Qt使用openCV

    使用Qt加OpenCV進行數(shù)字圖像處理了還是很不錯的,參考網(wǎng)上一個帖子分享一下經(jīng)驗:環(huán)境:Windows下的Qt4.7.0安裝qt-sdk-win-opensource-4.7下載OpenCV
    發(fā)表于 11-22 16:12

    人臉識別歷程中的opencv是1.0還是emcv版本?

    Q1.這個歷程中的opencv是否是1.0還是emcv版本?。縌2.看到里面好多opencv中有的函數(shù)并沒有調用,而是重寫了一個(比如轉
    發(fā)表于 10-28 14:31

    怎樣去生成能在Qt中應用的opencv

    請問如何生成適用于arm版的opencv,能在Qt中應用。(想在Qt中開發(fā)opencv相關的功能,需要調用opencv,我用別的交叉工具鏈
    發(fā)表于 12-30 06:58

    OpenCV3編程入門-源碼例程全集-HoughLinesP函數(shù)

    OpenCV3編程入門-源碼例程全集-HoughLinesP函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?10次下載

    openCV開源模塊組成部分以及介紹

    的API。 OpenCV是一個模塊化結構,即由幾個共享和靜態(tài)組成。模塊如下: core -一個定義基本數(shù)據(jù)結構的模塊,包括多維數(shù)組和其它模塊使用的核心函數(shù) imgproc-圖像處理模
    發(fā)表于 11-17 01:43 ?3734次閱讀

    通過SDSoC開發(fā)環(huán)境加速OpenCV功能

    通過SDSoC開發(fā)環(huán)境僅使用C / C ++和硬件優(yōu)化,在硬件中加速OpenCV功能
    的頭像 發(fā)表于 11-27 06:25 ?2992次閱讀

    OpenCV的特點和主要功能及實現(xiàn)光流方法的運動說明

    序列圖像的光流計算是計算機視覺研究領域運動估計的重要組成部分。本文介紹了OpenCV的特點和主要功能,通過調用函數(shù)庫中的金字塔Lucas—Kanade光流計算
    發(fā)表于 10-15 11:56 ?12次下載
    <b class='flag-5'>OpenCV</b><b class='flag-5'>庫</b>的特點和主要<b class='flag-5'>功能</b>及實現(xiàn)光流方法的運動說明

    OpenCV函數(shù)圖像處理目錄說明

    本文檔的主要內容詳細介紹的是OpenCV函數(shù)圖像處理目錄說明。
    發(fā)表于 10-29 15:55 ?12次下載
    <b class='flag-5'>OpenCV</b><b class='flag-5'>函數(shù)</b>圖像處理目錄說明

    OpenCV的小波變換函數(shù)代碼免費下載

    OpenCV里面沒有提供小波變換函數(shù)確實是一大遺憾,網(wǎng)上找點小波變換的代碼吧,大多是針對BMP直接操作的,還沒有發(fā)現(xiàn)非常適合OpenCV的,沒辦法,自己動手手寫了一個,意在拋磚引玉,歡迎大家批評,拍磚頭,砸雞蛋。
    發(fā)表于 11-14 15:51 ?13次下載
    <b class='flag-5'>OpenCV</b>的小波變換<b class='flag-5'>函數(shù)</b>代碼免費下載

    如何安裝和配置OpenCVOpenCV幾個小問題解答

    本文檔的主要內容詳細介紹的是如何安裝和配置OpenCVOpenCV幾個小問題解答包括了:安裝和配置OpenCV,Highgui.h與CvvImage類的問題:,如何通過攝像頭獲取視
    發(fā)表于 12-17 17:25 ?9次下載
    如何安裝和配置<b class='flag-5'>OpenCV</b>及<b class='flag-5'>OpenCV</b>的<b class='flag-5'>幾個</b>小問題解答

    opencv計算機視覺介紹

    OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。
    的頭像 發(fā)表于 04-13 18:23 ?2966次閱讀

    不屬于python的內置函數(shù)

    Python是一種高級編程語言,它提供了許多內置函數(shù),可以幫助開發(fā)人員更輕松地處理各種任務。但是,在Python中并非所有的函數(shù)都是內置函數(shù)
    的頭像 發(fā)表于 11-29 14:27 ?1478次閱讀

    opencv的主要功能有哪些

    OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺,提供了大量的計算機視覺算法和工具。以下是OpenCV的主要功能: 圖像處
    的頭像 發(fā)表于 07-16 10:35 ?1548次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?1195次閱讀