18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用樹莓派 + OpenCV 打造人臉識別技術(shù)!

上海晶珩電子科技有限公司 ? 2025-07-29 17:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在本指南中,我們將教您如何使用OpenCV和面部識別庫(兩個(gè)出色的開源項(xiàng)目)設(shè)置樹莓派來檢測和識別面部。在這個(gè)設(shè)置中,所有的數(shù)據(jù)和處理都將在Pi上本地執(zhí)行,這意味著您的所有面部和數(shù)據(jù)都不會離開Pi本身。

像面部識別這樣的計(jì)算機(jī)視覺任務(wù)對初學(xué)者來說可能有點(diǎn)嚇人,但由于許多人的努力,這些任務(wù)已經(jīng)被簡化了。我們將從安裝所需的庫和包開始,然后運(yùn)行3段代碼。首先將使用Pi來拍攝照片,然后我們將使用這些照片作為數(shù)據(jù)集來訓(xùn)練人臉識別模型,最后我們將運(yùn)行人臉識別代碼本身。

如果你對計(jì)算機(jī)視覺,目標(biāo)檢測和姿態(tài)估計(jì)感興趣,也可以考慮查看以下內(nèi)容:

在樹莓派5上使用YOLO進(jìn)行物體和動物識別-入門指南

在樹莓派5上開啟YOLO姿態(tài)估計(jì)識別之旅!

如何在樹莓派 AI HAT+上進(jìn)行YOLO目標(biāo)檢測?

如何在樹莓派 AI HAT+上進(jìn)行YOLO姿態(tài)估計(jì)?

讓我們開始吧!


目錄:

所需材料

硬件組裝

安裝樹莓派操作系統(tǒng)

設(shè)置虛擬環(huán)境并安裝庫

拍照并訓(xùn)練模型

運(yùn)行人臉識別

硬件控制及后續(xù)步驟

致謝

代碼下載

附錄:代碼解析


所需材料

要跟隨本指南操作,您需要:

樹莓派5 - 當(dāng)使用基于150張圖像訓(xùn)練的模型時(shí),我們發(fā)現(xiàn)它大約需要1.3GB的RAM。因此,2GB的樹莓派可能也能用,但4GB或8GB的型號會更穩(wěn)妥。本指南也適用于樹莓派4,但性能會慢一倍。

樹莓派攝像頭 - 我們使用的是攝像頭模塊V3

轉(zhuǎn)接線 - 如果您使用的是樹莓派5,它配備的是不同尺寸的CSI攝像頭線,而您的攝像頭可能配備的是較舊的較粗的線,因此值得仔細(xì)檢查一下。攝像頭模塊V3肯定需要一條轉(zhuǎn)接線

散熱方案 - 本項(xiàng)目處理量較大,因此需要適當(dāng)?shù)纳岱椒āτ谖覀兊臉漭?,我們使用的是主動散熱器。

電源

Micro SD卡 - 至少16GB容量

顯示器和Micro-HDMI轉(zhuǎn)HDMI線

鼠標(biāo)和鍵盤

*所需物品可以直接聯(lián)系我們進(jìn)行購買。


硬件組裝

在硬件組裝方面,這里相當(dāng)簡單。將線纜較粗的一端連接到攝像頭,較細(xì)的一端連接到樹莓派5。這些連接器上有一個(gè)標(biāo)簽 - 將其抬起,然后將線纜插入插槽。確保線纜放置整齊且方正,然后將標(biāo)簽推回原位以固定線纜。

39529ca2-6c5e-11f0-9080-92fbcf53809c.jpg

請注意,這些連接器只能以一個(gè)方向插入,且它們可能比較脆弱,因此請避免過度彎曲(稍微彎曲一點(diǎn)沒問題)。


安裝Bookworm操作系統(tǒng)

首先,我們需要將樹莓派操作系統(tǒng)安裝到Micro SD卡上。使用樹莓派成像工具,選擇樹莓派5作為設(shè)備,選擇Raspberry Pi OS(64位)作為操作系統(tǒng),并選擇您的microSD卡作為存儲設(shè)備。

395a84bc-6c5e-11f0-9080-92fbcf53809c.png

注意:將樹莓派操作系統(tǒng)安裝到MicroSD卡上將會清除卡上的所有數(shù)據(jù)。

此過程可能需要幾分鐘時(shí)間來下載操作系統(tǒng)并安裝。安裝完成后,將其插入樹莓派并啟動。您的樹莓派將進(jìn)行首次安裝,請確保將其連接到互聯(lián)網(wǎng)。


設(shè)置虛擬環(huán)境并安裝庫

隨著2023年Bookworm操作系統(tǒng)的推出,我們現(xiàn)在需要使用虛擬環(huán)境(或venv)。這些只是隔離的虛擬空間,我們可以使用它們來運(yùn)行項(xiàng)目,而不會破壞樹莓派操作系統(tǒng)的其余部分和我們的包 - 換句話說,我們可以在這里隨心所欲地操作,而不會損壞樹莓派操作系統(tǒng)的其余部分。這是一個(gè)需要學(xué)習(xí)的額外部分,但它非常簡單。

39644d26-6c5e-11f0-9080-92fbcf53809c.jpg

要?jiǎng)?chuàng)建虛擬環(huán)境,請打開一個(gè)新的終端窗口并輸入:

python3 -m venv--system-site-packagesface_rec

這將創(chuàng)建一個(gè)名為“face_rec”的新虛擬環(huán)境。您可以在home/pi下找到這個(gè)虛擬環(huán)境的文件夾,它將被命名為“face_rec”。

創(chuàng)建venv后,通過輸入以下命令進(jìn)入它:

sourceface_rec/bin/activate

執(zhí)行此操作后,您將在綠色文本的左側(cè)看到虛擬環(huán)境的名稱 - 這意味著我們正在其中正確工作。如果您需要重新進(jìn)入此環(huán)境(例如,如果您關(guān)閉了終端窗口,您將退出環(huán)境),只需再次輸入上面的source命令即可。

396d6c94-6c5e-11f0-9080-92fbcf53809c.jpg

現(xiàn)在,我們正在虛擬環(huán)境中工作,可以開始安裝所需的包了。首先,我們將通過輸入以下命令來確保我們的包列表和樹莓派是最新的:

sudo aptupdatesudo aptfull-upgrade

然后輸入以下命令安裝OpenCV:

pipinstall opencv-python

我們還將安裝一個(gè)我們需要的工具Imutils:

pipinstall imutils

以及一個(gè)名為cmake的工具(在提示時(shí)按y鍵):

sudoapt install cmake

然后我們將安裝人臉識別庫:

pipinstall face-recognition

此安裝過程可能需要10到30分鐘,因此在此期間請喝杯茶休息一下。

3979e5c8-6c5e-11f0-9080-92fbcf53809c.jpg

我們還有一件事要做,那就是設(shè)置Thonny以使用我們剛剛創(chuàng)建的虛擬環(huán)境。Thonny是我們將運(yùn)行所有代碼的程序,我們需要讓它從同一個(gè)venv中運(yùn)行,以便它可以訪問我們安裝的庫。

首次打開Thonny時(shí),它可能處于簡化模式,您將在右上角看到“切換到常規(guī)模式”。如果存在此選項(xiàng),請點(diǎn)擊它并關(guān)閉Thonny以重新啟動。

39849068-6c5e-11f0-9080-92fbcf53809c.jpg

現(xiàn)在,通過選擇“運(yùn)行”>“配置解釋器”進(jìn)入解釋器選項(xiàng)菜單。在Python可執(zhí)行文件選項(xiàng)下,有一個(gè)帶有三個(gè)點(diǎn)的按鈕。選擇它并導(dǎo)航到我們剛剛創(chuàng)建的虛擬環(huán)境中的Python可執(zhí)行文件。

3993ddd4-6c5e-11f0-9080-92fbcf53809c.jpg

它位于home/pi/face_rec/bin下,在此文件中,您需要選擇名為“python3”的文件。點(diǎn)擊確定,您現(xiàn)在將在此venv中工作。

無論何時(shí)打開Thonny,它現(xiàn)在都將自動在此環(huán)境中運(yùn)行。您可以通過從同一解釋器選項(xiàng)菜單中的Python可執(zhí)行文件下的下拉菜單中選擇它來更改您正在使用的環(huán)境。如果您希望退出虛擬環(huán)境,請選擇“bin/python3”選項(xiàng)。


拍照并訓(xùn)練模型

在開始識別人臉之前,我們需要使用我們希望它識別的人臉來訓(xùn)練模型。首先下載項(xiàng)目文件夾,其中包含運(yùn)行此項(xiàng)目所需的所有內(nèi)容。解壓并將其放置在易于訪問的位置(我們只是將其放在了桌面上)。

在此文件夾中,您將看到我們將使用的三個(gè)Python腳本以及一個(gè)名為dataset的文件夾。這是我們將用我們希望訓(xùn)練模型的圖像填充的文件夾。在Thonny中打開名為image_capture.py的Python腳本 - 您可能需要右鍵單擊并選擇Thonny,因?yàn)樗ǔ2皇悄J(rèn)的Python編輯器。我們不會詳細(xì)剖析這段代碼的工作原理,但我們只需要知道它會拍照并將它們放置在我們需要的正確文件結(jié)構(gòu)中。

在腳本的頂部,您將看到以下行:

# Change this to the name of the person you're photographingPERSON_NAME="John Smith"

當(dāng)您拍攝某人的面部照片時(shí),這將是分配給該人的名字。請注意,它是區(qū)分大小寫的,因此John Smith和john smith將是兩個(gè)人。這里的一個(gè)好做法可能是只使用小寫字母,以免意外訓(xùn)練同一個(gè)人兩次。

因此,請繼續(xù)將其設(shè)置為您要訓(xùn)練的第一個(gè)人名字,然后點(diǎn)擊綠色播放按鈕運(yùn)行它。將彈出一個(gè)新窗口顯示攝像頭畫面。調(diào)整好位置后按空格鍵拍照!您可以在此窗口中拍攝任意數(shù)量的照片,完成后按“Q”鍵退出。

399d0dbe-6c5e-11f0-9080-92fbcf53809c.jpg

選擇用于訓(xùn)練模型的照片數(shù)量將取決于您的項(xiàng)目。對于大多數(shù)應(yīng)用來說,一張清晰的人臉正對攝像頭且光線良好的照片通常就足夠了,但再多幾張不同角度的人臉照片也無妨。

如果您現(xiàn)在查看dataset文件夾,您將看到此過程已創(chuàng)建了一個(gè)以代碼開頭幾行中設(shè)置的人名為名稱的新文件夾,并且此文件夾內(nèi)還將包含在此過程中拍攝的所有圖像。這就是我們需要訓(xùn)練模型的結(jié)構(gòu) - 一個(gè)包含我們希望識別的人臉名稱或ID的文件夾,以及我們希望使用的圖像。如果您想使用現(xiàn)有的照片,可以在dataset中創(chuàng)建一個(gè)文件夾,將文件夾名稱設(shè)置為這將識別的人,然后將照片放入其中。

一旦您擁有了所有希望識別的人的照片文件,請?jiān)趖honny中打開名為model_training.py的腳本。如果您運(yùn)行此腳本,它將使用所有這些照片來訓(xùn)練我們將在下一步中使用的模型,并且您可以在shell中看到此過程的實(shí)時(shí)進(jìn)度。根據(jù)您訓(xùn)練它的圖像數(shù)量,此過程可能需要幾秒到幾分鐘的時(shí)間。

訓(xùn)練完成后,您將看到一個(gè)完成消息,并且它將創(chuàng)建一個(gè)名為“encodings.pickle”的文件 - 這是我們訓(xùn)練好的模型。

39a788ac-6c5e-11f0-9080-92fbcf53809c.jpg


運(yùn)行人臉識別

現(xiàn)在,我們終于準(zhǔn)備好運(yùn)行人臉識別了。在Thonny中打開facial_recognition.py腳本并運(yùn)行它。幾秒鐘后,將出現(xiàn)攝像頭畫面,如果一切正常,它應(yīng)該能夠通過在人臉周圍繪制一個(gè)框并標(biāo)注名字來識別人臉。它只能檢測到您訓(xùn)練過的人臉,如果它檢測到一個(gè)不在數(shù)據(jù)集中的人臉,它將只是將其標(biāo)記為“未知”。您還可以在右上角看到幀處理速度(FPS)。

您還應(yīng)該發(fā)現(xiàn)它相當(dāng)準(zhǔn)確,即使對于移動和模糊的對象也是如此 - 搖搖頭看看它是否仍然能識別您。戴上一副太陽鏡,它應(yīng)該仍然能夠識別您。不過,也有一些方法可以欺騙這個(gè)系統(tǒng),如果您將頭傾斜超過45度,它可能根本無法識別您,如果您部分遮擋面部,它也將難以檢測到您。

39d0a55c-6c5e-11f0-9080-92fbcf53809c.jpg

我們可以在代碼中調(diào)整兩個(gè)變量來增加FPS或處理能力,它們是攝像頭的輸入分辨率和一個(gè)在處理攝像頭畫面時(shí)改變分辨率的縮放器。

在代碼的開頭部分,您將找到以特定分辨率初始化攝像頭的行。默認(rèn)情況下,它是1920 x 1080像素,我們可以將其設(shè)置為幾乎任何大小,只要它不超過攝像頭的功能范圍即可。

picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888',"size": (1920,1080)}))

再往下一點(diǎn),您將找到一個(gè)名為“cv_scaler”的變量。這是一個(gè)將攝像頭分辨率從我們初始化時(shí)的分辨率進(jìn)行縮放的變量。這個(gè)數(shù)字必須是一個(gè)整數(shù) - 因此不能有小數(shù)點(diǎn)。

cv_scaler=4# this has to be a whole number

我們輸入到facial_recognition庫的分辨率會影響其性能,我們可以調(diào)整這兩個(gè)變量來改變分辨率,因此讓我們快速看一下如何首先使用這兩個(gè)變量來改變分辨率。代碼獲取攝像頭的分辨率并將其除以cv_scaler。以下是一些示例:

如果分辨率設(shè)置為1920x1080,且cv_scaler = 10,則處理后的分辨率將為192x108

如果分辨率設(shè)置為1920x1080,且cv_scaler = 4,則處理后的分辨率將為480x270

如果分辨率設(shè)置為480x270且cv_scaler = 1,則處理后的分辨率將為480x270

請注意,在后兩個(gè)示例中,處理分辨率為480x270,雖然它們將提供相同的FPS和處理能力,但最后一個(gè)的預(yù)覽窗口將較小且分辨率較低,因?yàn)槟鞘俏覀兂跏蓟瘮z像頭畫面的大小。最好將您的分辨率設(shè)置為較大的尺寸,如1920x1080或1280x720,并更改cv_scaler來降低分辨率。

現(xiàn)在我們知道如何降低分辨率了,讓我們看看對性能的影響。下圖展示了兩種不同分辨率的處理情況。兩者都將攝像頭初始化為1920x1080,但左圖的cv_scaler = 1,結(jié)果為0.5 FPS,而右圖的cv_scaler = 10,結(jié)果約為5 FPS。圖像中還顯示了它們能夠識別人臉的最大距離,左圖是從我們大型工作室房間的另一端,而右圖只有約一米遠(yuǎn)。這可能只是心理作用,但我們認(rèn)為較高的分辨率也可能更準(zhǔn)確地捕捉到模糊的對象 - 但差別不大。

39e09016-6c5e-11f0-9080-92fbcf53809c.jpg


硬件控制及后續(xù)步驟

到目前為止,我們的設(shè)置可以識別人臉、在其周圍繪制一個(gè)框并標(biāo)注名字。讓我們更進(jìn)一步,使用名為facial_recognition_hardware.py的腳本對其做些其他事情。此腳本有一些額外的添加,允許我們控制樹莓派的GPIO引腳。在腳本的頂部,您將找到一個(gè)授權(quán)名字列表,當(dāng)檢測到這些名字時(shí),將打開樹莓派的14號引腳:

authorized_names= ["john","alice","bob"] # Replace with your actual names

如果您希望向此列表添加或更改名字,請將名字放在括號中并用逗號分隔。請注意,這也是區(qū)分大小寫的,如果您將所有訓(xùn)練名字都保持小寫,請?jiān)诖颂幰脖3诌@樣做。

在process_frame函數(shù)中,我們有以下代碼段:

# Control the GPIO pin based on face detection ifauthorized_face_detected: output.on() # TurnonPin else: output.off() # TurnoffPin

這是這個(gè)新腳本的核心部分,如果檢測到授權(quán)人臉,它將打開14號引腳,如果沒有檢測到人臉,它將關(guān)閉該引腳。如果您想在此之外做其他事情,這是您可以添加代碼的地方。

在視頻指南中,我們連接了一個(gè)由電磁閥驅(qū)動的門鎖和一個(gè)繼電器,設(shè)置了授權(quán)名字列表,并在識別人臉時(shí)偽“解鎖了門”。您還會注意到另一個(gè)添加,即我們在授權(quán)名單上的人臉下方添加了文字,說明此人是授權(quán)的。

39ea06b4-6c5e-11f0-9080-92fbcf53809c.jpg

雖然這是一個(gè)具體的示例,但它可以修改為執(zhí)行幾乎任何任務(wù),因?yàn)槲覀冇幸粋€(gè)簡單的結(jié)構(gòu) - 如果檢測到人臉,則執(zhí)行某操作,否則執(zhí)行其他操作。我們可以使用此邏輯來控制一組RGB LED燈,或控制一個(gè)伺服電機(jī),或打開一個(gè)電機(jī)。(另外,如果您想學(xué)習(xí)如何將電磁閥連接到樹莓派,我們有相關(guān)指南)

它也不一定非要控制硬件,我們可以選擇發(fā)送電子郵件,或通過藍(lán)牙發(fā)送通知,或任何其他基于軟件的自動化。雖然我們沒有明確的指南介紹這些,但您應(yīng)該可以將我們的演示腳本粘貼到像ChatGPT或Claude這樣的LLM中,并讓它們幫助您編寫所需的代碼。


致謝

像這樣的項(xiàng)目之所以成為可能,要?dú)w功于眾多人員將開源項(xiàng)目帶給大眾所做出的不可思議的工作。我們主要想向OpenCV和人臉識別庫團(tuán)隊(duì)表示衷心的感謝,感謝他們創(chuàng)建了這些項(xiàng)目。我們還要感謝Caroline Dunn開發(fā)了大量利用pickle模型的代碼。


代碼下載

您可以在此zip文件中找到本指南中運(yùn)行的所有腳本。

https://core-electronics.com.au/attachments/uploads/facial-recognition-updated.zip


附錄:代碼解析

對于那些希望了解這段代碼內(nèi)部工作原理的人來說,讓我們快速瀏覽一下并看看幕后發(fā)生了什么。這并不是了解發(fā)生了什么的必要條件,但對于那些想要了解的人來說只是一個(gè)額外的內(nèi)容。

與往常一樣,我們的代碼從導(dǎo)入所需的庫開始,包括我們之前安裝的OpenCV和人臉識別庫:

importface_recognitionimportcv2importnumpyasnpfrompicamera2importPicamera2importtimeimportpickle

然后我們加載我們創(chuàng)建的pickle模型并將其解包為faces和names。

print("[INFO] loading encodings...")withopen("encodings.pickle","rb")asf: data= pickle.loads(f.read())known_face_encodings =data["encodings"]known_face_names =data["names"]

使用Picamera 2,我們?nèi)缓笠灾付ǖ姆直媛食跏蓟瘮z像頭:

picam2= Picamera2()picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888',"size": (1920,1080)}))picam2.start()

然后我們初始化一堆將在代碼其余部分使用的變量。這是我們可以更改cv_scaler的地方:

cv_scaler=4#
face_locations= []face_encodings= []face_names= []frame_count=0start_time= time.time()fps=0

接下來,我們創(chuàng)建第一個(gè)函數(shù),該函數(shù)接收一幀并從中獲取識別數(shù)據(jù)。它首先使用cv_scaler將我們輸入的幀縮小到較低的分辨率。然后,根據(jù)庫的需要將其從BGR轉(zhuǎn)換為RGB:

defprocess_frame(frame): globalface_locations, face_encodings, face_names
# Resize the frame using cv_scaler to increase performance (less pixels processed, less time spent) resized_frame= cv2.resize(frame, (0,0), fx=(1/cv_scaler), fy=(1/cv_scaler))
# Convert the image from BGR to RGB colour space, the facial recognition library uses RGB, OpenCV uses BGR rgb_resized_frame= cv2.cvtColor(resized_frame, cv2.COLOR_BGR2RGB)

然后我們將縮小后的幀輸入到人臉識別庫中,并獲取人臉的位置和編碼。

face_locations= face_recognition.face_locations(rgb_resized_frame) face_encodings= face_recognition.face_encodings(rgb_resized_frame, face_locations, model='large')

之后,我們使用一個(gè)for循環(huán)遍歷圖像中的所有人臉,并查看編碼是否與我們訓(xùn)練模型中的任何編碼匹配。

face_names=[] forface_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"
# 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) ifmatches[best_match_index]: name= known_face_names[best_match_index] face_names.append(name)
returnframe

然后我們創(chuàng)建另一個(gè)函數(shù),該函數(shù)將接收幀并在其周圍繪制框,以及用識別出的名字標(biāo)注它。for循環(huán)意味著它將遍歷所有識別出的人臉。它使用頂部、右側(cè)、底部和左側(cè)坐標(biāo)(我們在上一個(gè)函數(shù)中通過face_locations找到的)在識別出的人臉周圍繪制一個(gè)框。但在使用它之前,我們必須按cv_scaler進(jìn)行縮放,否則它不會在我們的攝像頭預(yù)覽上繪制在正確的位置(處理是在縮小后的幀上進(jìn)行的,因此我們必須將坐標(biāo)放大以匹配我們的攝像頭預(yù)覽):

defdraw_results(frame): # Display the results for(top, right, bottom, left), nameinzip(face_locations, face_names): # Scale back up face locations since the frame we detected in was scaled top *= cv_scaler right *= cv_scaler bottom *= cv_scaler left *= cv_scaler

然后我們使用OpenCV提供的工具來實(shí)際繪制這些東西。我們首先在人臉周圍繪制一個(gè)藍(lán)色的空矩形,線寬為3,然后在這個(gè)框上繪制一個(gè)實(shí)心矩形,最后將名字放在這個(gè)實(shí)心框上。

# Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (244,42,3),3)
# Draw a label with a name below the face cv2.rectangle(frame, (left -3, top -35), (right+3, top), (244,42,3), cv2.FILLED) font= cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left +6, top -6), font,1.0, (255,255,255),1)
returnframe

然后我們創(chuàng)建最后一個(gè)函數(shù)來計(jì)算我們的FPS。在它的最后,它將當(dāng)前時(shí)間存儲在一個(gè)變量中,下次我們調(diào)用它時(shí),它將比較該時(shí)間與新時(shí)間以計(jì)算出經(jīng)過的時(shí)間,并據(jù)此計(jì)算FPS。

# Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (244,42,3),3)
# Draw a label with a name below the face cv2.rectangle(frame, (left -3, top -35), (right+3, top), (244,42,3), cv2.FILLED) font= cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left +6, top -6), font,1.0, (255,255,255),1)
returnframe

隨著我們的函數(shù)布局完成,我們終于準(zhǔn)備好進(jìn)入我們無限重復(fù)的while True循環(huán)了。這首先使用Picamera2從攝像頭捕獲一幀,然后將該幀輸入到我們的process_frame函數(shù)中,該函數(shù)輸出所有識別出的人臉及其位置。然后我們將其輸入到display_frame中,該函數(shù)獲取人臉位置和識別出的人臉,并將它們繪制在一幀上。這個(gè)display_frame變量就是我們稍后將告訴樹莓派顯示的幀:

whileTrue: # Capture a frame from camera frame = picam2.capture_array()
# Process the frame with the function processed_frame = process_frame(frame)
# Get the text and boxes to be drawn based on the processed frame display_frame = draw_results(processed_frame)

之后,我們調(diào)用calculate_fps函數(shù)來計(jì)算我們的FPS,然后我們使用更多OpenCV工具將FPS計(jì)數(shù)器附加到顯示幀上,然后我們在預(yù)覽窗口中顯示它!

# Calculate and update FPS current_fps= calculate_fps()
# Attach FPS counter to the text and boxes cv2.putText(display_frame, f"FPS: {current_fps:.1f}", (display_frame.shape[1] -150,30), cv2.FONT_HERSHEY_SIMPLEX,1, (0,255,0),2)
# Display everything over the video feed. cv2.imshow('Video', display_frame)

最后,在循環(huán)結(jié)束時(shí),我們檢查是否按下了“q”鍵。如果按下了,我們將退出這個(gè)while True循環(huán)并運(yùn)行最后一段代碼,該代碼將安全地停止攝像頭并關(guān)閉攝像頭預(yù)覽窗口:

# Break the loop and stop the script if 'q' is pressed ifcv2.waitKey(1) == ord("q"): break# By breaking the loop we run this code here which closes everythingcv2.destroyAllWindows()picam2.stop()

原文地址:

https://core-electronics.com.au/guides/raspberry-pi/face-recognition-with-raspberry-pi-and-opencv/

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7266

    瀏覽量

    128067
  • 人臉識別
    +關(guān)注

    關(guān)注

    77

    文章

    4104

    瀏覽量

    87145
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    650

    瀏覽量

    44094
  • 樹莓派
    +關(guān)注

    關(guān)注

    122

    文章

    2067

    瀏覽量

    109066
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹莓派上使用OpenCV和Python實(shí)現(xiàn)實(shí)時(shí)人臉檢測

    理論知識,因此初學(xué)者也能輕松跟著步驟實(shí)現(xiàn)。 項(xiàng)目所需設(shè)備 硬件: 樹莓 3 Model B; 樹莓攝像頭模塊(PiCam)。 語言和庫: Ope
    的頭像 發(fā)表于 03-06 09:00 ?5.2w次閱讀

    怎么樹莓做基于云服務(wù)平臺的人臉識別

    怎么樹莓做基于云服務(wù)平臺的人臉識別,大神求解,急??!
    發(fā)表于 08-07 23:17

    樹莓人臉識別

    基于云服務(wù)平臺的人臉識別1、設(shè)備樹莓2、USB攝像頭。2、要求l使用USB攝像頭抓拍(可以使用各種開源軟件,也可以自己編程)臉部照片;l使用人臉
    發(fā)表于 08-07 23:19

    【OK210申請】基于樹莓與FPGA的運(yùn)動目標(biāo)識別

    圖像采集,F(xiàn)PGA做圖像處理,主要采取opencv對圖像進(jìn)行處理,ok210可做平時(shí)擴(kuò)展項(xiàng)目,例如植入APP中,如果cortex-A8足夠強(qiáng)大可考慮換下樹莓原理:運(yùn)動目標(biāo)識別;背景減
    發(fā)表于 08-10 14:13

    【NanoPi2申請】基于opencv人臉識別門禁系統(tǒng)

    防與監(jiān)控的系統(tǒng),望批準(zhǔn)!謝謝!項(xiàng)目描述:項(xiàng)目簡述:本項(xiàng)目旨在一個(gè)較高性能的嵌入式平臺上搭建一個(gè)linux系統(tǒng),利用opencv編程實(shí)現(xiàn)人臉識別。為了實(shí)現(xiàn)圖像采集,需要編寫linux驅(qū)動對攝像頭的數(shù)據(jù)
    發(fā)表于 12-18 14:34

    人臉識別

    ` 本帖最后由 goyuqinghua 于 2016-3-1 14:44 編輯 樹莓派來做人臉識別的文章在網(wǎng)上很多,方法千秋各異,用到OPEN
    發(fā)表于 02-22 12:09

    樹莓怎么打造開心農(nóng)場

    /ACCESSORIES_RPI_4.html]其它更多有趣的專案:DIY相機(jī)樹莓做的報(bào)警器跟拍的小車家庭媒體中心云監(jiān)控DIY街頭游戲機(jī)人臉識別云相冊
    發(fā)表于 02-22 15:14

    樹莓 人臉識別圖像如何通過vlc網(wǎng)絡(luò)輸出

    我已經(jīng)加載算法,對樹莓攝像頭采集到的圖像進(jìn)行人臉區(qū)域提取,請問如何將其通過vlc輸出到8090端口?本人新手,求各位經(jīng)驗(yàn)人士指導(dǎo)!不勝感激~
    發(fā)表于 05-11 11:10

    樹莓Python與自美人工智能系統(tǒng)實(shí)現(xiàn)人臉識別

    系統(tǒng)是基于樹莓、Python、微信小程序打造出的一款物聯(lián)網(wǎng)人工智能系統(tǒng)。目前系統(tǒng)已實(shí)現(xiàn):語音喚醒、語音識別、語音合成、人體探測、人臉
    發(fā)表于 12-26 11:24

    OpenCV搭建活體檢測器教程

    detection)。跟隨作者給出的代碼和講解,你可以在人臉識別系統(tǒng)中創(chuàng)建一個(gè)活體檢測器,用于檢測偽造人臉并執(zhí)行反人臉欺騙。 我在過去的一年里寫了不少
    的頭像 發(fā)表于 11-05 15:54 ?2989次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>OpenCV</b>搭建活體檢測器教程

    人臉識別指南:如何在樹莓派上安裝和設(shè)置 Dlib

    學(xué)習(xí)如何在樹莓派上安裝Dlib并配置人臉識別功能,為您的AI項(xiàng)目奠定基礎(chǔ)。在樹莓派上安裝Dlib的詳細(xì)步驟要為樹莓
    的頭像 發(fā)表于 03-24 17:31 ?1097次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識別</b>指南:如何在<b class='flag-5'>樹莓</b>派上安裝和設(shè)置 Dlib

    樹莓 Zero 打造的智能漫游車!

    使用PXFMini和樹莓Zero打造您自己的自主漫游車。本項(xiàng)目所用組件硬件組件ErleRoboticsPXFmini×1樹莓Zero×1
    的頭像 發(fā)表于 05-13 16:39 ?726次閱讀
    <b class='flag-5'>用</b> <b class='flag-5'>樹莓</b><b class='flag-5'>派</b> Zero <b class='flag-5'>打造</b>的智能漫游車!

    如何使用樹莓+OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤?

    大家好,這是一個(gè)樹莓OpenCV的連載專題。使用樹莓OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)
    的頭像 發(fā)表于 08-13 17:44 ?758次閱讀
    如何使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>+<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤?

    如何使用樹莓OpenCV實(shí)現(xiàn)面部和運(yùn)動追蹤的云臺系統(tǒng)?

    使用樹莓OpenCV實(shí)時(shí)掃描并存儲二維碼使用樹莓OpenCV實(shí)現(xiàn)物體與動物
    的頭像 發(fā)表于 08-14 17:45 ?734次閱讀
    如何使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>與<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)面部和運(yùn)動追蹤的云臺系統(tǒng)?

    零成本鋼鐵俠手套!樹莓+OpenCV 秒變手勢遙控器!

    使用樹莓OpenCV實(shí)時(shí)掃描并存儲二維碼使用樹莓OpenCV實(shí)現(xiàn)物體與動物
    的頭像 發(fā)表于 08-16 16:16 ?717次閱讀
    零成本鋼鐵俠手套!<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>+<b class='flag-5'>OpenCV</b> 秒變手勢遙控器!