吴忠躺衫网络科技有限公司

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

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

3天內不再提示

OpenCV的視頻處理之人臉檢測 1

jf_78858299 ? 來源:小白玩轉Python ? 作者:小白 ? 2023-02-07 15:27 ? 次閱讀

目前可依靠模塊化方式實現圖像處理管道,檢測一堆圖像文件中的人臉,并將其與漂亮的結構化JSON摘要文件一起保存在單獨的文件夾中。

讓我們對視頻流也可以進行同樣的操作。

首先,我們需要捕獲視頻流。該管線任務將從視頻文件或網絡攝像頭(逐幀)生成一系列圖像。接下來,我們將檢測每個幀上的臉部并將其保存。接下來的三個塊是可選的,它們的目標是創建帶有注釋的輸出視頻,例如在檢測到的人臉周圍的框。我們可以顯示帶注釋的視頻并將其保存。最后一個任務將收集有關檢測到的面部的信息,并保存帶有面部的框坐標和置信度的JSON摘要文件。

如果尚未設置jagin / image-processing-pipeline存儲庫以查看源代碼并運行一些示例,則可以立即執行以下操作:

$ git clone git://github.com/jagin/image-processing-pipeline.git
$ cd image-processing-pipeline
$ git checkout 7df1963247caa01b503980fe152138b88df6c526
$ conda env create -f environment.yml
$ conda activate pipeline

如果已經克隆了存儲庫并設置了環境,請使用以下命令對其進行更新:

$ git pull
$ git checkout 7df1963247caa01b503980fe152138b88df6c526
$ conda env update -f environment.yml

拍攝影片

使用OpenCV捕獲視頻非常簡單。我們需要創建一個VideoCapture對象,其中參數是設備索引(指定哪個攝像機的數字)或視頻文件的名稱。然后,我們可以逐幀捕獲視頻流。

我們可以使用以下CaptureVideo擴展類來實現捕獲視頻任務Pipeline:

import cv2
from pipeline.pipeline import Pipeline


class CaptureVideo(Pipeline):
    def __init__(self, src=0):
        self.cap = cv2.VideoCapture(src)
        if not self.cap.isOpened():
            raise IOError(f"Cannot open video {src}")


        self.fps = int(self.cap.get(cv2.CAP_PROP_FPS))
        self.frame_count = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT))


        super(CaptureVideo, self).__init__()


    def generator(self):
        image_idx = 0
        while self.has_next():
            ret, image = self.cap.read()
            if not ret:
                # no frames has been grabbed
                break


            data = {
                "image_id": f"{image_idx:05d}",
                "image": image,
            }


            if self.filter(data):
                image_idx += 1
                yield self.map(data)


    def cleanup(self):
        # Closes video file or capturing device
        self.cap.release()

使用__init__我們創建VideoCapture對象(第6行)并提取視頻流的屬性,例如每秒幀數和幀數。我們將需要它們顯示進度條并正確保存視頻。圖像幀將在具有字典結構的generator函數(第30行)中產生:

data = {
    "image_id": f"{image_idx:05d}",
    "image": image,
}

當然,數據中也包括圖像的序列號和幀的二進制數據。

檢測人臉

我們準備檢測面部。這次,我們將使用OpenCV的深度神經網絡模塊,而不是我在上一個故事中所承諾的Haar級聯。我們將要使用的模型更加準確,并且還為我們提供了置信度得分。

從版本3.3開始,OpenCV支持許多深度學習框架,例如Caffe,TensorFlow和PyTorch,從而使我們能夠加載模型,預處理輸入圖像并進行推理以獲得輸出分類。

有一位優秀的博客文章中阿德里安·羅斯布魯克(Adrian Rosebrock)解釋如何使用OpenCV和深度學習實現人臉檢測。我們將在FaceDetector類中使用部分代碼:

import cv2
import numpy as np


class FaceDetector:
    def __init__(self, prototxt, model, confidence=0.5):
        self.confidence = confidence


        self.net = cv2.dnn.readNetFromCaffe(prototxt, model)


    def detect(self, images):
        # convert images into blob
        blob = self.preprocess(images)


        # pass the blob through the network and obtain the detections and predictions
        self.net.setInput(blob)
        detections = self.net.forward()
        # Prepare storage for faces for every image in the batch
        faces = dict(zip(range(len(images)), [[] for _ in range(len(images))]))


        # loop over the detections
        for i in range(0, detections.shape[2]):
            # extract the confidence (i.e., probability) associated with the prediction
            confidence = detections[0, 0, i, 2]


            # filter out weak detections by ensuring the `confidence` is
            # greater than the minimum confidence
            if confidence < self.confidence:
                continue


            # grab the image index
            image_idx = int(detections[0, 0, i, 0])
            # grab the image dimensions
            (h, w) = images[image_idx].shape[:2]
            # compute the (x, y)-coordinates of the bounding box for the object
            box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])


            # Add result
            faces[image_idx].append((box, confidence))


        return faces


    def preprocess(self, images):
        return cv2.dnn.blobFromImages(images, 1.0, (300, 300), (104.0, 177.0, 123.0))
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 攝像頭
    +關注

    關注

    60

    文章

    4862

    瀏覽量

    96311
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41556
  • JSON
    +關注

    關注

    0

    文章

    119

    瀏覽量

    7011
收藏 人收藏

    評論

    相關推薦

    樹莓派上使用OpenCV和Python實現實時人臉檢測

    本文介紹了如何在樹莓派上,使用 OpenCV 和 Python 完成人臉檢測項目。該項目不僅描述了識別人臉所需要的具體步驟,同時還提供了很多擴展知識。此外,該項目并不需要讀者了解詳細的
    的頭像 發表于 03-06 09:00 ?5.1w次閱讀

    基于OPENCV的相機捕捉視頻進行人臉檢測--米爾NXP i.MX93開發板

    本文將介紹基于米爾電子MYD-LMX93開發板(米爾基于NXPi.MX93開發板)的基于OpenCV人臉檢測方案測試。OpenCV提供了一個非常簡單的接口,用于相機捕捉一個
    的頭像 發表于 11-07 09:03 ?1159次閱讀
    基于<b class='flag-5'>OPENCV</b>的相機捕捉<b class='flag-5'>視頻</b>進行<b class='flag-5'>人臉</b><b class='flag-5'>檢測</b>--米爾NXP i.MX93開發板

    如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

    本篇測評由優秀測評者“eefocus_3914144”提供。 本文將介紹基于米爾電子MYD-LMX93開發板(米爾基于NXP i.MX93開發板)的基于OpenCV人臉檢測方案測試。 Ope
    發表于 11-15 17:58

    基于openCV人臉檢測系統的設計

    通過對基于Adaboost人臉檢測算法的研究,利用該算法與計算機視覺類庫openCV進行人臉檢測系統的設計,實現了對出現在
    發表于 12-23 14:19

    【TL6748 DSP申請】基于TMS320C6748 DSP人臉檢測及跟蹤

    申請理由:我們是公司的研發團隊,正在研發人臉檢測及跟蹤。之前使用的是TI達芬奇系列DM6446芯片,將OpenCV移植到DM6446的DSP上發現處理效率太低。分析主要原因是dm644
    發表于 09-10 11:09

    【NanoPi2申請】基于opencv人臉識別門禁系統

    進行實時采集,隨后opencv對圖像進行特征采樣,并與學習樣本對比,進行人臉匹配。該系統內還搭載一個嵌入式服務器,通過以太網接入局域網絡,可以使用客戶端與系統建立聯系,實現配置與反饋結果。學習計劃:1
    發表于 12-18 14:34

    【AI技能解析】人臉識別是怎么做到的?

    環境搭建2、opencv對圖像和視頻進行基本操作3、opencv圖像濾波及形態學處理4、opencv人臉
    發表于 03-16 11:25

    【EASY EAI Nano開源套件試用體驗】4AI功能測試之人臉檢測

    ,rknn_context句柄path:輸入參數,算法模型路徑input_image:輸入參數, Opencv Mat格式圖像result:輸出參數, 人臉檢測的結果輸出3 代碼分析與修改官方例程使用的是雙目攝像頭
    發表于 09-27 22:39

    【飛凌RK3568開發板試用體驗】使用OpenCV進行人臉識別

    RK3568四核Arm Cortex-A55 處理器的主板,從廠商的宣傳看,其主要市場就是人臉識別等視頻和圖像應用。今天就使用OpenCV自帶的DNN模塊進行
    發表于 01-11 22:06

    【飛凌RK3588開發板試用】實現人臉檢測

    【目的】在實現視頻監控的基礎上,加入opencv人臉檢測模型,快速的實現人臉檢測功能。實現方式
    發表于 03-09 14:10

    基于openCV人臉檢測識別系統的設計

    通過對基于Adaboost人臉檢測算法的研究,利用該算法與計算機視覺類庫openCV進行人臉檢測系統的設計,實現了對出現在
    發表于 06-15 10:53 ?477次下載
    基于<b class='flag-5'>openCV</b>的<b class='flag-5'>人臉</b><b class='flag-5'>檢測</b>識別系統的設計

    Android系統下OpenCV人臉檢測模塊的設計

    針對解決OpenCV人臉檢測模塊在Android平臺編譯和移植的問題,提出一種利用JNI技術(Java Native Interface)調用OpenCV以及采用Android NDK
    發表于 11-07 17:40 ?118次下載
    Android系統下<b class='flag-5'>OpenCV</b>的<b class='flag-5'>人臉</b><b class='flag-5'>檢測</b>模塊的設計

    openCV人臉檢測系統的設計方案探究

    摘要: 通過對基于 Adaboost 人臉檢測算法的研究,利用該算法與計算機視覺類庫 openCV 進行人臉檢測系統的設計,實現了對出現在
    發表于 10-20 16:39 ?3次下載

    OpenCV視頻處理之人臉檢測 2

    目前可依靠模塊化方式實現圖像處理管道,檢測一堆圖像文件中的人臉,并將其與漂亮的結構化JSON摘要文件一起保存在單獨的文件夾中。 讓我們對視頻流也可以進行同樣的操作。 首先,
    的頭像 發表于 02-07 15:27 ?552次閱讀

    Android系統下OpenCV人臉檢測模塊的設計

    電子發燒友網站提供《Android系統下OpenCV人臉檢測模塊的設計.pdf》資料免費下載
    發表于 10-23 09:37 ?0次下載
    Android系統下<b class='flag-5'>OpenCV</b>的<b class='flag-5'>人臉</b><b class='flag-5'>檢測</b>模塊的設計
    百家乐试玩网站| A8百家乐游戏| 百家乐官网输一押二| 百家乐游戏机破解方法| 五华县| 索雷尔百家乐官网的玩法技巧和规则| 全讯网wn888.com| 百家乐官网开户投注| 娱乐城免费领取体验金| 盈丰| 现金网信誉排行| 公海百家乐的玩法技巧和规则| 百家乐官网策略与心得| 大发888大家赢娱乐| 太阳城百家乐官网客户端| 豪门国际娱乐城| 新龙县| 优博家百家乐官网娱乐城| 足球百家乐系统| 百家乐官网龙虎桌布| 大发888真钱电玩游戏| 百家乐官网007| 香港六合彩特码开奖结果| 百家乐斗地主下载| 百家乐娱乐求指点呀| 澳门百家乐官网的公式| 皇家娱乐场| 恒和国际| 88娱乐城网址| 威尼斯人娱乐城好不好| 娱百家乐下载| 百家乐官网平台要多少钱| 大发888古怪猴子| 百家乐赌博故事| 做生意养猫风水| 大发888游戏平台hg dafa 888 gw| 百家乐官网软件代打| 德州扑克英文| 新濠国际娱乐| 皇冠现金开户| 顶级赌场是真的吗|