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

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

3天內不再提示

怎樣用Python數據科學平臺Anaconda在圖像中啟用面部檢測

454398 ? 來源:工程師吳畏 ? 2019-08-03 09:43 ? 次閱讀

安裝Anaconda環(huán)境

訪問Anaconda網站下載最新版本的Anaconda for Windows。

Anaconda平臺網站下載頁面。

注意:確保選擇Python 3.6版本和相應的體系結構(32位或64位)。

安裝Anaconda環(huán)境及其默認值設置。

Anaconda平臺的高級版安裝選項窗口。

確保保留“將Anaconda添加到我的PATH環(huán)境變量”選項取消選擇。

一個窗口,顯示使用Anaconda平臺安裝Microsoft Visual Studio代碼安裝的選項。

教程不需要安裝“Microsoft Visual Studio Code”,因為它將使用Spyder IDE環(huán)境以Python編程。

繼續(xù)并選擇在出現時跳過安裝選項。

一些程序將是我通過設置過程安裝:Anaconda Prompt,Anaconda Navigator和Spyder IDE。

完成安裝后,在Windows任務欄中搜索“Anaconda Prompt”并打開桌面應用程序。

在搜索框中顯示Anaconda Prompt桌面應用程序的Windows任務欄。

使用Anaconda提示

要測試Anaconda命令是否正常工作,請運行以下代碼。

測試Anaconda命令是否正常運行所需的特定代碼。

此過程中,為Python 3.5版本創(chuàng)建了一個新的Anaconda環(huán)境。

使用Anaconda安裝程序設置了Python 3.6版本,但出于兼容性原因,我們將使用帶有Open CV3的Python 3.5版本分布。

創(chuàng)建新環(huán)境

使用Anaconda創(chuàng)建新環(huán)境所需的特定代碼。

你會找到一個輸出如下所示的例子:

使用Anaconda激活新環(huán)境所需的代碼輸出示例。

Anaconda將安裝一些新包;只需輸入‘y’表示是,然后按回車鍵繼續(xù)安裝。

在下一步中,我們將安裝更多的包,所以讓Anaconda經銷商安裝所需的包,否則它可能會沒有與Python正確集成。

安裝完成后,環(huán)境被激活:

在Anaconda中激活確認環(huán)境的特定代碼。

如果安裝成功完成,您會注意到‘(base)’環(huán)境已更改為新環(huán)境。

這表示新環(huán)境已激活并且Anaconda已將‘$ PATH’變量更改為‘C:/Users/Akshay/Anaconda3/envs/MyOpenCV’位置。現在所有未來的安裝都只適用于這個特定的環(huán)境。

Python版本現在也應該顯示為Python 3.5而不是系統版本。

確認Anaconda平臺當前正在運行的Python版本的特定代碼。

安裝OpenCV3和依賴項

首先,安裝NumPy庫進行科學計算。

安裝NumPy庫所需的特定代碼。

然后安裝anaconda-client。

安裝anaconda-client所需的特定代碼。

最后,安裝OpenCV3(由于它的大小,可能需要一些時間才能下載庫。)

在Anaconda平臺中安裝OpenCV3所需的特定代碼。

現在使用Anaconda安裝并運行Spyder IDE for Python。

在Windows任務欄中搜索“Anaconda Navigator”并打開它。

從那里可以選擇新環(huán)境并安裝Spyder。

Anaconda平臺應用程序頁面的屏幕截圖。

顯示Spyder位置的屏幕截圖Anaconda平臺中的環(huán)境。

安裝Spyder后,通過選擇啟動來打開程序。/p》

人臉檢測算法

確保OpenCV平臺在Python中運行。您可以使用以下代碼:

確認OpenCV平臺所需的特定代碼在Python中正常運行。

如果它去了如上所示的下一行沒有返回錯誤,那么你將設置為繼續(xù)下一步。

你需要下載所需的Python腳本(.pv),帶有faces的圖像(。 jpg)和本文末尾提供的XML格式的Haar級聯分類器(.xml)。

注意:請確保將所有這些文件保存在同一文件夾中以方便訪問。

Haar級聯分類器背后的理論有點復雜,為了簡化它,基本上它們是包含OpenCB檢測對象所需的所有數據的XML文件,如本例中的面部。

分類器通過機器學習方法進行訓練,以檢測圖像中的模式,以識別其中的面部。

‘文件瀏覽器選項卡’w ill允許您導航到保存先前文件的文件夾。

您可以使用以下代碼檢查當前工作目錄:

確認當前工作目錄所需的特定代碼。

如果代碼輸出文件存儲位置的文件夾位置,那么你就可以了。

代碼細分

包含將用于面部檢測的XML文件和圖像的特定代碼。

由于設置了一個文件夾,其中包含所有必需文件作為當前工作目錄,因此可以搜索文件名沒有完整路徑的情況。

為此項目選擇的XML文件用于檢測直接面向攝像機的面。

如果可以使用不同的分類器,期望。

指定的特定代碼分類器。

此時,我們創(chuàng)建了級聯分類器并使用我們的XML文件對其進行初始化。這會加載所需的數據以檢測變量‘haar_face_cascade’中的面。

將照片轉換為灰度所需的特定代碼。

現在使用OpenCV的庫函數可以將使用的photo.jpg轉換為灰度。

注意:大多數圖像機器學習操作都以灰度顯示。

執(zhí)行人臉檢測算法所需的特定代碼。

上面的函數執(zhí)行人臉檢測算法,可以分解為:

detectMultiScale:檢測對象的常規(guī)函數。

灰度:將照片轉換為灰度顏色。

scaleFactor:補償

minSize:可能的最小對象大小,任何小于通過此函數指定的對象的對象都將被忽略。

minNeighbors:定義需要在窗口周圍檢測到的面部圖案的數量,以將空間聲明為面。 注意:建議將此函數的值設置為0,然后逐漸增加它以查看輸出如何變化。

上述函數值為設置為最常用的那些。

鼓勵嘗試使用不同的值來找到最佳設置。

執(zhí)行該功能時,矩形標記面的位置在圖像中。它還提供矩形左上角的坐標(x,y)及其寬度(w)和高度(h)。

可以使用以下代碼提取信息

提取值所需的特定代碼用于標記照片中檢測到的面部的矩形。

我們使用這些值來使用cv.rectange函數在面周圍繪制一個矩形。

Anaconda平臺在照片中檢測到的面部周圍繪制矩形所需的特定代碼。

最后,我們使用檢測到的面部顯示圖像,并等待用戶按下一個鍵。

人臉檢測結果

我們首先在band.jpg照片上測試算法。

使用Anaconda正確執(zhí)行人臉檢測的示例。

當我們運行程序時,控制臺應該回復“找到5個面孔!”并輸出帶有矩形的照片,表示其中面部的位置。

對這個家庭進行了第二次測試照片。

Anaconda的一個例子歪曲圖像中的面孔。

該程序在本次審判中歪曲了服裝作為面孔因為與第一張照片不同,所有樂隊成員與相機的距離相同 - 父母離照片的距離遠遠超過照片中的孩子。通過將比例因子調低至1.3,可以輕松解決此問題。

Anaconda的第二個例子正確識別圖像中的面部。

程序現在可以正確識別圖像中的面部。

由于此程序基于機器學習,因此永遠不會提供100%的準確性。如果您在大量圖像樣本上測試算法,您會發(fā)現它適用于大多數但不是所有情況。此外,根據照片,需要調整 detectMultiScale 函數中的參數以避免誤報。

最終代碼

1. import cv2

2.

3. # Specify the image path for face detection and XML file for the cascade

4. photo_path = “band.jpg”

5. cascade_path = “haarcascade_frontalface.xml”

6.

7. # Initialise the Haar Cascade Classifier with the XML file

8. haar_face_cascade = cv2.CascadeClassifier(cascade_path)

9.

10. # Read the photo and convert to grayscale

11. photo = cv2.imread(photo_path)

12. grayscale = cv2.cvtColor(photo, cv2.COLOR_BGR2GRAY)

13.

14. # Detect faces in the photo using OpenCV library

15. faces = haar_face_cascade.detectMultiScale(

16. grayscale,

17. scaleFactor = 1.1,

18. minNeighbors = 5,

19. minSize = (30, 30)

20. )

21.

22. print(“Found {0} faces!”.format(len(faces)))

23.

24. # Draw a rectangle around the faces

25. for (x, y, w, h) in faces:

26. cv2.rectangle(photo, (x, y), (x+w, y+h), color = (0, 255, 0), thickness = 2)

27.

28. cv2.imshow(“Faces found”, photo)

29. cv2.waitKey(0)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    55

    文章

    4774

    瀏覽量

    84386
  • 面部檢測
    +關注

    關注

    1

    文章

    4

    瀏覽量

    5858
收藏 人收藏

    評論

    相關推薦

    怎樣用THS3201實現輸出功率可調?

    怎樣用THS3201實現輸出功率可調?
    發(fā)表于 08-26 08:28

    AI軟件開發(fā)商Anaconda起訴英特爾侵權

    近日,軟件制造商Anaconda對科技巨頭英特爾提起了一樁引人注目的法律訴訟,指控其侵犯版權。據悉,Anaconda專注于提供數據科學和機器學習工具,其軟件
    的頭像 發(fā)表于 08-13 14:15 ?613次閱讀

    PythonAI的應用實例

    Python人工智能(AI)領域的應用極為廣泛且深入,從基礎的數據處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討
    的頭像 發(fā)表于 07-19 17:16 ?881次閱讀

    基于FPGA的攝像頭心率檢測裝置設計

    圖像視頻獲取信息的必要手段。 二十一世紀以來,隨著計算機技術的發(fā)展,圖像處理技術廣泛應用到了醫(yī)療、航天航空、無人駕駛等多個領域。醫(yī)療領域中,心率是反應人身體健康的一項重要指標,而
    發(fā)表于 07-01 17:58

    基于FPGA的實時邊緣檢測系統設計,Sobel圖像邊緣檢測,FPGA圖像處理

    運行時, FPGA 并行運算平臺首先完成對攝像頭的初始化和寄存器配置,配置完成之后讀取實時的圖像數據存入 SDRAM 存儲器, FPGA
    發(fā)表于 05-24 07:45

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?
    發(fā)表于 05-07 06:55

    stm32f100怎樣用重映射功能?

    的是stm32f100c8t6b芯片,現在想用將PB1映射為TIM1_CH3N,調用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)時, GPIO_PinAFConfig和GPIO_AF_TIM1都沒定義,st
    發(fā)表于 05-07 06:06

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼?

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼? SD卡例程能跑,但mx生成的代碼不能正常運行,我生成代碼后是不是還要配置一些東西?(我生成后只寫了測試代碼) 問題解決了,雖然我不知道我為什么不能直接使用mx生成的代碼去操作sd卡,但我通過復制粘貼例程的代碼完成了測試。
    發(fā)表于 03-12 08:15

    如何使用Python進行圖像識別的自動學習自動訓練?

    圖像識別的自動學習和自動訓練。 首先,讓我們了解一下圖像識別的基本概念。圖像識別是指通過計算機程序識別和理解圖像內容的過程。自動學習和自動訓練是指計算機通過觀察和學習
    的頭像 發(fā)表于 01-12 16:06 ?524次閱讀

    怎樣用表來判斷加熱管的好壞?

    怎樣用表來判斷加熱管的好壞? 萬表是電工常用的測量儀器,它可以用來判斷加熱管的好壞。加熱管是一種常見的加熱元件,廣泛應用于家電、機械設備和工業(yè)生產中。選擇和使用加熱管時,我們需
    的頭像 發(fā)表于 12-20 17:21 ?4830次閱讀

    無線通信:怎樣用電磁波表示1和0

    為什么頻率越高,能攜帶的信息就越多?以數字信號為例,信息就是一串串的1和0,所以先搞清楚怎樣用電磁波表示1和0。
    發(fā)表于 12-05 14:44 ?1703次閱讀
    無線通信:<b class='flag-5'>怎樣用</b>電磁波表示1和0

    python shell怎么

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。Shell,可以輸入一行代碼并立即得到結果,非常適合于測試、嘗試新代碼或進行簡單的任務。本文將詳
    的頭像 發(fā)表于 11-29 14:36 ?1078次閱讀

    怎樣用ADAU1761設計DRC的壓縮/擴展?

    請問怎樣用ADAU1761設計DRC的壓縮/擴展。我SigmaStudio 4.5的模塊只找到RMS。如果ADAU1761設計DRC要怎樣
    發(fā)表于 11-28 06:41

    python的終端窗口怎么打開

    Windows系統上,你可以通過以下幾種方法打開Python的終端窗口: 使用命令提示符打開終端窗口: 按下Win + R,打開“運行”對話框。 輸入“cmd”,然后點擊“確定”。 這將打開
    的頭像 發(fā)表于 11-22 11:23 ?6936次閱讀

    Python和matplotlib的配置與使用

    各種數據挖掘研究涉及領域中使用的Python庫,而且自帶了專業(yè)用來處理軟件環(huán)境依賴問題的conda包系統。 主要優(yōu)點是實現了外包管理與環(huán)境管理的各種功能,而且可以非常容易地處控制
    的頭像 發(fā)表于 11-16 15:52 ?485次閱讀
    <b class='flag-5'>Python</b>和matplotlib的配置與使用