電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 2034|回復(fù): 1
收起左側(cè)

【HiSpark IPC DIY Camera試用連載 】第二篇 視頻的人臉檢測(cè)

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-1-14 01:56:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
【HiSpark IPC DIY Camera試用連載 】第二篇 視頻的人臉檢測(cè),   
本帖最后由 瑟寒凌風(fēng) 于 2021-1-14 00:13 編輯



實(shí)在的,ipc本身就帶有這個(gè)功能,只要攝像頭出現(xiàn)畫(huà)面,本身就會(huì)檢測(cè)人臉,而且從app上看,還有移動(dòng)檢測(cè)功能,已經(jīng)非常強(qiáng)大了,但是自己做出來(lái),可以了解更多的知識(shí). 本文使用python和opencv來(lái)檢測(cè)的人臉. 使用的主要api如下:

  • cv2.cvtColor對(duì)色彩進(jìn)行轉(zhuǎn)換
      
  • cv2.CascadeClassifier這個(gè)是輸入人臉數(shù)據(jù),該數(shù)據(jù)基于文件haarcascade_frontalface_alt_tree.xml,已經(jīng)保存了人臉特征,不需要我們?nèi)?shí)現(xiàn)
      
  • cv2.detectMultiScale該函數(shù)用來(lái)檢測(cè)人臉,是本文處理人臉的主要函數(shù)

復(fù)制代碼 Opencv打開(kāi)攝像頭使用函數(shù):

  • camera = cv2.VideoCapture(0)  # 參數(shù)0表示第一個(gè)攝像頭

復(fù)制代碼 程序代碼如下
  # -*- coding: utf-8 -*-

import cv2

import numpy as np



camera = cv2.VideoCapture(0)



# 判斷視頻是否打開(kāi)

if (camera.isOpened())
  print(\“Open\“)

else:

     print(\“攝像頭未打開(kāi)\“)



# 測(cè)試用,查看視頻size

size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),

         int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))

print(\“size:\“ + repr(size))



# es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))

# kernel = np.ones((5, 5), np.uint8)

# background = None



while True:

     # 讀取視頻流

     grabbed, frame_lwpCV = camera.read()

     gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)

     face_detector = cv2.CascadeClassifier(“D:/Python/Python39/Lib/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml“)

     \“\“\“

     cv2.cv2.CascadeClassifier.CascadeClassifier def __init__(self,

              *args: Any,

              **kwargs: Any) -> None

     \“\“\“

     faces = face_detector.detectMultiScale(gray_lwpCV, 1.02, 5)

     \“\“\“

     def detectMultiScale(self,

                      image: Any,                # 輸入待檢測(cè)的圖像,灰度

                      scaleFactor: Any = None,   # 尺度系數(shù)

                      minNeighbors: Any = None,  # 需要的鄰域數(shù)

                      flags: Any = None,

                      minSize: Any = None,       # 最小檢測(cè)窗口

                      maxSize: Any = None) -> None   # 最大檢測(cè)窗口

     \“\“\“

     for x, y, w, h in faces:

         cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (0, 0, 255), 2)  # 繪制矩形

         # cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (0, 255, 0), 2)

         # cv2.rectangle(src, (x, y), (x + w, y + h), (0, 0, 255), 2)  # 繪制矩形

         \“\“\“

         def rectangle(img: Any,             # 圖像

               pt1: Any,                     # pt1 矩形的一個(gè)頂點(diǎn)

               pt2: Any,                     # pt2 矩形對(duì)角線(xiàn)上的另一個(gè)頂點(diǎn)

               color: Any,                   # 線(xiàn)條顏色 (RGB) 或亮度(灰度圖像 )

               thickness: Any = None,        # 組成矩形的線(xiàn)條的粗細(xì)程度,取負(fù)值時(shí)(如 CV_FILLED)函數(shù)繪制填充了色彩的矩形

               lineType: Any = None,         # 線(xiàn)條的類(lèi)型

               shift: Any = None) -> None

         \“\“\“

     cv2.imshow(\“contours\“, frame_lwpCV)

     # cv2.imshow(\“dis\“, diff)



     key = cv2.waitKey(1) & 0xFF

     # 按\“q\“健退出循環(huán)

     if key == ord(\“q\“):

         break



# When everything done, release the capture

camera.release()

cv2.destroyAllWindows()




PS:我在發(fā)現(xiàn)代碼格式亂了之后,嘗試修改,出現(xiàn)如下錯(cuò)誤

QQ截圖20210114001021.jpg (38.17 KB, 下載次數(shù): 0)

下載附件  保存到相冊(cè)  

1 小時(shí)前 上傳

沒(méi)法改,尷尬...

0

主題

3

帖子

14

積分

一級(jí)會(huì)員

Rank: 1

積分
14
沙發(fā)
發(fā)表于 2021-4-19 14:48:08 | 只看該作者
hispark ipc diy上燒錄鴻蒙系統(tǒng)后有支持opencv的庫(kù)文件在?

發(fā)表回復(fù)

本版積分規(guī)則

關(guān)閉

站長(zhǎng)推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表