中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

營(yíng)銷型網(wǎng)站建設(shè)極速建站廣州網(wǎng)絡(luò)seo公司

營(yíng)銷型網(wǎng)站建設(shè)極速建站,廣州網(wǎng)絡(luò)seo公司,工會(huì)網(wǎng)站建設(shè)請(qǐng)示,一個(gè)人做網(wǎng)站概述 在現(xiàn)代應(yīng)用中,人臉檢測(cè)是一項(xiàng)非常重要的技術(shù),廣泛應(yīng)用于安全監(jiān)控、身份驗(yàn)證等領(lǐng)域。本文將詳細(xì)介紹如何使用 Python 和 OpenCV 庫(kù)實(shí)現(xiàn)攝像頭人臉檢測(cè)并截圖,并通過具體的代碼示例來展示整個(gè)過程。 環(huán)境準(zhǔn)備 在開始編寫代碼之前&#…
概述

在現(xiàn)代應(yīng)用中,人臉檢測(cè)是一項(xiàng)非常重要的技術(shù),廣泛應(yīng)用于安全監(jiān)控、身份驗(yàn)證等領(lǐng)域。本文將詳細(xì)介紹如何使用 Python 和 OpenCV 庫(kù)實(shí)現(xiàn)攝像頭人臉檢測(cè)并截圖,并通過具體的代碼示例來展示整個(gè)過程。

環(huán)境準(zhǔn)備

在開始編寫代碼之前,確保已經(jīng)安裝了 OpenCV 庫(kù)。可以使用以下命令安裝:

pip install opencv-python
代碼詳解
# -*- coding: utf-8 -*-
# import 進(jìn)openCV的庫(kù)
import cv2
import os
import time# 調(diào)用攝像頭檢測(cè)人臉并截圖
def camera(window_name, path_name):# Linux 不顯示圖形界面cv2.namedWindow(window_name)# 視頻來源,來自USB攝像頭cap = cv2.VideoCapture(0)# 告訴OpenCV使用人臉識(shí)別分類器classfier = cv2.CascadeClassifier(os.getcwd()+"/haarcascade_frontalface_alt.xml")# 識(shí)別出人臉后要畫的邊框的顏色,RGB格式, color是一個(gè)不可增刪的數(shù)組color = (0, 255, 0)num = 0while cap.isOpened():ok, frame = cap.read()  # 讀取一幀數(shù)據(jù)if not ok:break# 將當(dāng)前楨圖像轉(zhuǎn)換成灰度圖像grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 人臉檢測(cè),1.2和2分別為圖片縮放比例和需要檢測(cè)的有效點(diǎn)數(shù)faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))if len(faceRects) > 0:  # 大于0則檢測(cè)到人臉for faceRect in faceRects:  # 單獨(dú)框出每一張人臉x, y, w, h = faceRectnum = num + 1# 將當(dāng)前幀保存為圖片img_name = "%s/%d.jpg" % (path_name, num)image = frame[y - 10: y + h + 10, x - 10: x + w + 10]cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])# 延遲 60s,不要太頻繁的發(fā)送,知道來了就可以了# time.sleep(60)# 畫出矩形框cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)# 顯示當(dāng)前捕捉到了多少人臉圖片了font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(frame, 'num:%d/1000' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4)# 顯示圖像 Linux 下注釋掉即可cv2.imshow(window_name, frame)c = cv2.waitKey(10)if c & 0xFF == ord('q'):break# 釋放攝像頭并銷毀所有窗口cap.release()cv2.destroyAllWindows()if __name__ == '__main__':camera("watchdog", os.getcwd()+"/face")
代碼解析
1. 導(dǎo)入必要的模塊
# -*- coding: utf-8 -*-
# import 進(jìn)openCV的庫(kù)
import cv2
import os
import time
  • # -*- coding: utf-8 -*-:指定文件編碼為 UTF-8。
  • import cv2:導(dǎo)入 OpenCV 庫(kù),用于圖像處理和人臉檢測(cè)。
  • import os:導(dǎo)入 os 模塊,用于文件路徑操作。
  • import time:導(dǎo)入 time 模塊,用于延遲操作。
2. 定義 camera 函數(shù)
def camera(window_name, path_name):
  • def camera(window_name, path_name)::定義一個(gè)名為 camera 的函數(shù),參數(shù) window_name 是窗口名稱,path_name 是保存截圖的路徑。
3. 創(chuàng)建窗口
    # Linux 不顯示圖形界面cv2.namedWindow(window_name)
  • cv2.namedWindow(window_name):創(chuàng)建一個(gè)窗口,用于顯示視頻流。在 Linux 下可以注釋掉這行代碼以不顯示圖形界面。
4. 打開攝像頭
    # 視頻來源,來自USB攝像頭cap = cv2.VideoCapture(0)
  • cv2.VideoCapture(0):打開默認(rèn)攝像頭。參數(shù) 0 表示默認(rèn)攝像頭。
5. 加載人臉識(shí)別分類器
    # 告訴OpenCV使用人臉識(shí)別分類器classfier = cv2.CascadeClassifier(os.getcwd()+"/haarcascade_frontalface_alt.xml")
  • cv2.CascadeClassifier(...):加載預(yù)訓(xùn)練的 Haar 級(jí)聯(lián)分類器,用于檢測(cè)人臉。
  • os.getcwd()+"/haarcascade_frontalface_alt.xml":指定分類器文件的路徑。
6. 設(shè)置邊框顏色
    # 識(shí)別出人臉后要畫的邊框的顏色,RGB格式, color是一個(gè)不可增刪的數(shù)組color = (0, 255, 0)
  • color = (0, 255, 0):定義邊框顏色為綠色。
7. 主循環(huán)
    num = 0while cap.isOpened():ok, frame = cap.read()  # 讀取一幀數(shù)據(jù)if not ok:break# 將當(dāng)前楨圖像轉(zhuǎn)換成灰度圖像grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 人臉檢測(cè),1.2和2分別為圖片縮放比例和需要檢測(cè)的有效點(diǎn)數(shù)faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))if len(faceRects) > 0:  # 大于0則檢測(cè)到人臉for faceRect in faceRects:  # 單獨(dú)框出每一張人臉x, y, w, h = faceRectnum = num + 1# 將當(dāng)前幀保存為圖片img_name = "%s/%d.jpg" % (path_name, num)image = frame[y - 10: y + h + 10, x - 10: x + w + 10]cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])# 延遲 60s,不要太頻繁的發(fā)送,知道來了就可以了# time.sleep(60)# 畫出矩形框cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)# 顯示當(dāng)前捕捉到了多少人臉圖片了font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(frame, 'num:%d/1000' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4)# 顯示圖像 Linux 下注釋掉即可cv2.imshow(window_name, frame)c = cv2.waitKey(10)if c & 0xFF == ord('q'):break
  • num = 0:初始化計(jì)數(shù)器。
  • while cap.isOpened()::進(jìn)入無限循環(huán),實(shí)時(shí)讀取攝像頭圖像。
  • ok, frame = cap.read():從攝像頭讀取一幀圖像。
  • if not ok::檢查讀取是否成功,如果失敗則退出循環(huán)。
  • grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY):將圖像轉(zhuǎn)換為灰度圖像。
  • faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32)):檢測(cè)圖像中的人臉。
  • if len(faceRects) > 0::檢查是否檢測(cè)到人臉。
  • for faceRect in faceRects::遍歷檢測(cè)到的每個(gè)人臉。
  • x, y, w, h = faceRect:獲取人臉的位置和大小。
  • num = num + 1:增加計(jì)數(shù)器。
  • img_name = "%s/%d.jpg" % (path_name, num):生成保存圖像的文件名。
  • image = frame[y - 10: y + h + 10, x - 10: x + w + 10]:裁剪人臉區(qū)域并擴(kuò)大邊界。
  • cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9]):保存圖像。
  • cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2):在圖像上繪制矩形框。
  • font = cv2.FONT_HERSHEY_SIMPLEX:設(shè)置字體樣式。
  • cv2.putText(frame, 'num:%d/1000' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4):在圖像上顯示當(dāng)前捕捉到的人臉數(shù)量。
  • cv2.imshow(window_name, frame):顯示帶有矩形標(biāo)記的圖像。
  • c = cv2.waitKey(10):等待 10 毫秒,等待用戶按鍵。
  • if c & 0xFF == ord('q')::按 ‘q’ 鍵退出循環(huán)。
8. 釋放資源
    # 釋放攝像頭并銷毀所有窗口cap.release()cv2.destroyAllWindows()
  • cap.release():釋放攝像頭資源。
  • cv2.destroyAllWindows():關(guān)閉所有 OpenCV 窗口。
9. 主程序入口
if __name__ == '__main__':camera("watchdog", os.getcwd()+"/face")
  • if __name__ == '__main__'::檢查是否直接運(yùn)行此腳本。
  • camera("watchdog", os.getcwd()+"/face"):調(diào)用 camera 函數(shù),傳入窗口名稱和保存截圖的路徑。
完整代碼
# -*- coding: utf-8 -*-
# import 進(jìn)openCV的庫(kù)
import cv2
import os
import time
# 調(diào)用攝像頭檢測(cè)人臉并截圖
def camera(window_name, path_name):# Linux 不顯示圖形界面cv2.namedWindow(window_name)# 視頻來源,來自USB攝像頭cap = cv2.VideoCapture(0)# 告訴OpenCV使用人臉識(shí)別分類器classfier = cv2.CascadeClassifier(os.getcwd()+"/haarcascade_frontalface_alt.xml")# 識(shí)別出人臉后要畫的邊框的顏色,RGB格式, color是一個(gè)不可增刪的數(shù)組color = (0, 255, 0)num = 0while cap.isOpened():ok, frame = cap.read()  # 讀取一幀數(shù)據(jù)if not ok:break# 將當(dāng)前楨圖像轉(zhuǎn)換成灰度圖像grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 人臉檢測(cè),1.2和2分別為圖片縮放比例和需要檢測(cè)的有效點(diǎn)數(shù)faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))if len(faceRects) > 0:  # 大于0則檢測(cè)到人臉for faceRect in faceRects:  # 單獨(dú)框出每一張人臉x, y, w, h = faceRectnum = num+1# 將當(dāng)前幀保存為圖片img_name = "%s/%d.jpg" % (path_name, num)image = frame[y - 10: y + h + 10, x - 10: x + w + 10]cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])# 延遲 60s,不要太頻繁的發(fā)送,知道來了就可以了# time.sleep(60)# 畫出矩形框cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)# 顯示當(dāng)前捕捉到了多少人臉圖片了font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(frame, 'num:%d/1000' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4)# 顯示圖像 Linux 下注釋掉即可cv2.imshow(window_name, frame)c = cv2.waitKey(10)if c & 0xFF == ord('q'):break# 釋放攝像頭并銷毀所有窗口cap.release()cv2.destroyAllWindows()if __name__ == '__main__':camera("watchdog", os.getcwd()+"/face")
測(cè)試
  1. 確保你的攝像頭正常工作。

  2. 運(yùn)行腳本:

    python3 face_detection.py
    
  3. 打開攝像頭后,你會(huì)看到一個(gè)窗口顯示實(shí)時(shí)視頻流,并且在檢測(cè)到的人臉周圍繪制綠色矩形。

  4. 按 ‘q’ 鍵退出程序。

總結(jié)

本文詳細(xì)介紹了如何使用 Python 和 OpenCV 庫(kù)實(shí)現(xiàn)攝像頭人臉檢測(cè)并截圖,并通過具體的代碼示例展示了整個(gè)過程。通過使用 cv2.VideoCapture 打開攝像頭,cv2.CascadeClassifier 加載預(yù)訓(xùn)練的 Haar 級(jí)聯(lián)分類器,cv2.cvtColor 轉(zhuǎn)換圖像顏色空間,cv2.rectangle 繪制矩形,cv2.imwrite 保存圖像,最終實(shí)現(xiàn)了在實(shí)時(shí)視頻流中檢測(cè)并保存人臉圖像的功能。


http://www.risenshineclean.com/news/51542.html

相關(guān)文章:

  • 視頻下載網(wǎng)站軟件做副屏做網(wǎng)頁(yè)設(shè)計(jì)一個(gè)月能掙多少
  • 什么網(wǎng)站可以看女人唔易做網(wǎng)絡(luò)營(yíng)銷策劃書1500字
  • 做笑話網(wǎng)站常見的推廣方式
  • 免費(fèi)中文網(wǎng)站模板html關(guān)鍵詞排名哪里查
  • 手機(jī)點(diǎn)了釣魚網(wǎng)站怎么辦查詢網(wǎng)址域名ip地址
  • 廊坊網(wǎng)站制作公司小程序開發(fā)平臺(tái)有哪些
  • 個(gè)人網(wǎng)站可以做資訊小說類網(wǎng)絡(luò)優(yōu)化工程師是做什么的
  • 2017做那個(gè)網(wǎng)站能致富惠州seo關(guān)鍵字排名
  • 做彩平的材質(zhì)網(wǎng)站優(yōu)質(zhì)友情鏈接
  • c 網(wǎng)站開發(fā)的優(yōu)點(diǎn)建設(shè)網(wǎng)站推廣
  • 企業(yè)網(wǎng)站建站技術(shù)seo網(wǎng)絡(luò)營(yíng)銷外包公司
  • 個(gè)人建網(wǎng)站的費(fèi)用百度搜索引擎官網(wǎng)入口
  • 網(wǎng)站建設(shè)南陽(yáng)seo外包公司報(bào)價(jià)
  • 做網(wǎng)站客戶一般會(huì)問什么問題寧波seo外包推廣排名
  • 有哪些比較好的外貿(mào)網(wǎng)站seo推廣計(jì)劃
  • 網(wǎng)站建設(shè)企業(yè)建站要求seo的優(yōu)化原理
  • 南昌網(wǎng)站開發(fā)多少錢杭州seo公司
  • 仿xss網(wǎng)站搭建個(gè)人網(wǎng)站制作
  • 西安網(wǎng)站開發(fā)哪家好教育機(jī)構(gòu)加盟
  • 石家莊網(wǎng)站建設(shè)培訓(xùn)班2022真實(shí)新聞作文400字
  • 網(wǎng)站網(wǎng)頁(yè)的收錄數(shù)量好的競(jìng)價(jià)賬戶托管外包
  • 從網(wǎng)絡(luò)營(yíng)銷角度做網(wǎng)站seo外包服務(wù)方案
  • 任丘網(wǎng)站優(yōu)化網(wǎng)站推廣名詞解釋
  • 免費(fèi)ppt成品網(wǎng)站上海百度seo網(wǎng)站優(yōu)化
  • 北流建設(shè)局網(wǎng)站seo網(wǎng)站關(guān)鍵詞優(yōu)化工具
  • 一站式服務(wù)是什么意思網(wǎng)址和網(wǎng)站的區(qū)別
  • 上海 網(wǎng)站備案系統(tǒng)windows優(yōu)化大師會(huì)員兌換碼
  • 小程序開發(fā)費(fèi)用計(jì)入什么科目seo服務(wù)商技術(shù)好的公司
  • 安康網(wǎng)站建設(shè)公司最新推廣注冊(cè)app拿傭金
  • 保健品網(wǎng)站設(shè)計(jì)短視頻營(yíng)銷案例