使用OpencvSharp實現人臉識別

在網上有很多關于這方面的博客,但是都沒有說完整,按照他們的博客做下來代碼都不能跑。所以我就自己寫個博客補充一下

我這使用的.NET框架版本是 .NetFramework4.7.1

使用Nuget安裝這兩個程序包就夠了,不需要其他的配置

一定要安裝OpenCvSharp4.runtime.win 否則運行后會報錯

對單個圖片進行人臉識別:

            string path = "D:\\素材\\R-C (1).jpg";        //aaaa.mp4Mat srcImg = Cv2.ImRead(path, (ImreadModes)1);//加載人眼、人臉模型數據OpenCvSharp.CascadeClassifier faceFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml");OpenCvSharp.CascadeClassifier eyeFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml");//進行檢測識別Rect[] faceRects = faceFinder.DetectMultiScale(srcImg);Rect[] eyeRects = eyeFinder.DetectMultiScale(srcImg);//如果有檢測到,就繪制結果到圖像上if (faceRects.Length > 0){Cv2.Rectangle(srcImg, faceRects[0], new Scalar(0, 0, 255), 3);}if (eyeRects.Length > 1){Cv2.Rectangle(srcImg, eyeRects[0], new Scalar(255, 0, 0), 3);Cv2.Rectangle(srcImg, eyeRects[1], new Scalar(255, 0, 0), 3);}//顯示結果Cv2.ImShow("showImg", srcImg);Cv2.WaitKey(1);

對攝像頭的畫面或者本地視頻畫面進行人臉識別:

            //讀取本地的視頻FrameSource video = Cv2.CreateFrameSource_Video("D:\\素材\\aaaa.mp4");//使用攝像頭//FrameSource video = Cv2.CreateFrameSource_Camera(1);//聲明窗口Cv2.NamedWindow("video", WindowFlags.Normal);while (true){//獲取幀Mat frame = new Mat();video.NextFrame(frame);//加載人眼、人臉模型數據OpenCvSharp.CascadeClassifier faceFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml");OpenCvSharp.CascadeClassifier eyeFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml");//進行檢測識別Rect[] faceRects = faceFinder.DetectMultiScale(frame);Rect[] eyeRects = eyeFinder.DetectMultiScale(frame);//如果有檢測到,就繪制結果到圖像上if (faceRects.Length > 0){Cv2.Rectangle(frame, faceRects[0], new Scalar(0, 0, 255), 3);}if (eyeRects.Length > 1){Cv2.Rectangle(frame, eyeRects[0], new Scalar(255, 0, 0), 3);Cv2.Rectangle(frame, eyeRects[1], new Scalar(255, 0, 0), 3);}//顯示結果Cv2.ImShow("video", frame);Cv2.WaitKey(1);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44010.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型日報 2024-07-09

大模型日報 2024-07-09 大模型資訊 大模型最強架構TTT問世!斯坦福UCSD等5年磨一劍,一夜推翻Transformer 斯坦福UCSD等機構研究者提出的TTT方法,直接替代了注意力機制,語言模型方法從此或將徹底改變。這個模型通過對輸入token進行梯…

在亞馬遜云科技AWS上利用SageMaker機器學習模型平臺搭建生成式AI應用(附Llama大模型部署和測試代碼)

項目簡介: 接下來,小李哥將會每天介紹一個基于亞馬遜云科技AWS云計算平臺的全球前沿AI技術解決方案,幫助大家快速了解國際上最熱門的云計算平臺亞馬遜云科技AWS AI最佳實踐,并應用到自己的日常工作里。本次介紹的是如何在Amazon …

802.11漫游流程簡單解析與筆記_Part2_05_wpa_supplicant如何通過nl80211控制內核開始關聯

最近在進行和802.11漫游有關的工作,需要對wpa_supplicant認證流程和漫游過程有更多的了解,所以通過閱讀論文等方式,記錄整理漫游相關知識。Part1將記錄802.11漫游的基本流程、802.11R的基本流程、與認證和漫游都有關的三層秘鑰基礎。Part1將包…

Vue 3與Pinia:下一代狀態管理的探索

引言 隨著Vue 3的推出,Pinia應運而生,成為官方推薦的狀態管理庫,旨在替代Vuex。Pinia與Vuex相比,帶來了以下主要區別和優勢: 更簡潔的API:Pinia的API設計更加直觀和簡潔,易于理解和使用。更好…

220V降5V芯片輸出電壓電流封裝選型WT

220V降5V芯片輸出電壓電流封裝選型WT 220V降5V恒壓推薦:非隔離芯片選型及其應用方案 在考慮220V轉低壓應用方案時,以下非隔離芯片型號及其封裝形式提供了不同的電壓電流輸出能力: 1. WT5101A(SOT23-3封裝)適用于將2…

【實戰場景】大文件解析入庫的方案有哪些?

【實戰場景】大文件解析入庫的方案有哪些? 開篇詞:干貨篇:分塊解析內存映射文件流式處理數據庫集群處理分布式計算框架 總結篇:我是杰叔叔,一名滬漂的碼農,下期再會! 開篇詞: 需求背…

14-57 劍和詩人31 - LLM/SLM 中的高級 RAG

??? 首先確定幾個縮寫的意思 SLM 小模型 LLM 大模型 檢索增強生成 (RAG) 已成為一種增強語言模型能力的強大技術。通過檢索和調整外部知識,RAG 可讓模型生成更準確、更相關、更全面的文本。 RAG 架構主要有三種類型:簡單型、模塊化和高級 RAG&…

性能測試的流程(企業真實流程詳解)(二)

性能測試的流程 1.需求分析以及需求確定(指標值,場景,環境,人員) 一般提出需求的人員有:客戶,產品經理,項目組領導等 2.性能測試計劃和方案制定 基準測試: 負覡測試: 壓力測試: 穩定性測試: 其他:配置測試…

Git安裝使用教程

# 《Git 操作使用教程》 一、Git 簡介 Git 是一個分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。它讓開發者可以輕松地跟蹤代碼的更改、與團隊成員協作,并管理項目的不同版本。 二、安裝 Git 在 Windows 系統上,可以從 Git 官…

刷題Day47|1143.最長公共子序列、1035.不相交的線、53. 最大子序和、

1143.最長公共子序列 1143. 最長公共子序列 - 力扣(LeetCode) 思路:dp數組含義是以i-1和j-1為結尾的最長公共子序列。當text1[i - 1] text2[i - 1], dp[i][j] dp[i - 1][j - 1] 1; 否則dp[i][j] max(dp[i - 1][j], dp[i][j - 1]); 因為兩…

無法連接Linux遠程服務器的Mysql,解決辦法

問題描述 如果是關閉虛擬機之后,二次打開無法連接Mysql,則可嘗試一下方法進行解決 解決方法 關閉虛擬機的防火墻 1:查看防火墻狀態 systemctl status firewalld 一下顯示說明防火墻是啟動的狀態 2:關閉防火墻 systemctl st…

git提交emoji指南

emoji 指南 emojiemoji 代碼commit 說明🎉 (慶祝)tada初次提交? (火花)sparkles引入新功能🔖 (書簽)bookmark發行/版本標簽🐛 (bug)bug修復 bug🚑 (急救車)ambulance重要補丁🌐 (地球)globe_with_meridians國際化與本…

PTA - 編寫函數計算圓面積

題目描述: 1.要求編寫函數getCircleArea(r)計算給定半徑r的圓面積,函數返回圓的面積。 2.要求編寫函數get_rList(n) 輸入n個值放入列表并將列表返回 函數接口定義: getCircleArea(r); get_rList(n); 傳入的參數r表示圓的半徑&#xff0c…

音視頻解封裝demo:將FLV文件解封裝(demux)得到文件中的H264數據和AAC數據(純手工,不依賴第三方開源庫)

1、README 前言 注意:flv是不支持h.265封裝的。目前解封裝功能正常,所得到的H.264文件與AAC文件均可正常播放。 a. demo使用 $ make clean && make DEBUG1 $ $ $ ./flv_demux_h264_aac Usage: ./flv_demux_h264_aac avfile/test1.flv./flv_d…

壓縮感知1——算法簡介

傳統的數據采集 傳統的數字信號采樣定律就是有名的香農采樣定理,又稱那奎斯特采樣定律定理內容如下:為了不失真地恢復模擬信號,采樣頻率應該不小于模擬信號頻譜中最高頻率的2倍 上述步驟得到的數字信號的數據量比較大,一方面不利…

C語言程序題(一)

一.三個整數從大到小輸出 首先做這個題目需要知道理清排序的思路,通過比較三個整數的值,使之從大到小輸出。解這道題有很多方法我就總結了兩種方法:一是通過中間變量比較和交換,二是可以用冒泡排序法(雖然三個數字排序…

車載聚合路由器應用場景分析

乾元通QYT-X1z車載式1U多卡聚合路由器,支持最多8路聚合,無論是應急救援,還是車載交通,任何寬帶服務商無法覆蓋的區域,聚合路由器可提供現場需要的穩定、流暢、安全的視頻傳輸網絡,聚合路由器可無縫接入應急…

Dify中的weaviate向量數據庫操作

一.安裝weaviate客戶端 1.Dify 0.6.9中weaviate信息 在Dify 0.6.9版本中weaviate容器信息如下: # The Weaviate vector store. weaviate:image: semitechnologies/weaviate:1.19.0restart: alwaysvolumes:# Mount the Weaviate data directory to the container.- ./volume…

【操作系統】進程管理——信號量機制(個人筆記)

學習日期:2024.7.9 內容摘要:信號量機制,用信號量實現進程的同步與互斥 信號量機制 信號量的概念 在上節內容中,我們學習了進程互斥的軟件和硬件解決方案,但這些方案都有各自的問題,雙標志法都因為檢查和…

【自用】【高昆輪概率論與數理統計筆記】2.1 分布函數的概念與性質

不定期更新,前面的章節會在學完后補回來,重新學學概率,當年考研考的數學二,沒有概率基礎,想自己補補,視頻課是高昆輪老師講的浙大四版概率論教材的視頻課,地址: 第一章:h…