圖片人臉檢測(OpenCV版)

圖片人臉檢測(OpenCV版)

來自專欄猿論

圖片人臉檢測

人臉檢測使用到的技術是OpenCV,上一節已經介紹了OpenCV的環境安裝,點擊查看.

功能展示

識別一種圖上的所有人的臉,並且標出人臉的位置,畫出人眼以及嘴的位置,展示效果圖如下:

多張臉識別效果圖:

技術實現思路

圖片轉換成灰色(降低為一維的灰度,減低計算強度)

圖片上畫矩形

使用訓練分類器查找人臉

具體實現代碼

圖片轉換成灰色

使用OpenCV的cvtColor()轉換圖片顏色,代碼如下:

import cv2filepath = "img/xingye-1.jpg"img = cv2.imread(filepath)# 轉換灰色gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 顯示圖像cv2.imshow("Image", gray)cv2.waitKey(0)cv2.destroyAllWindows()

圖片上畫矩形

使用OpenCV的rectangle()繪製矩形,代碼如下:

import cv2filepath = "img/xingye-1.jpg"img = cv2.imread(filepath) # 讀取圖片gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 轉換灰色x = y = 10 # 坐標w = 100 # 矩形大小(寬、高)color = (0, 0, 255) # 定義繪製顏色cv2.rectangle(img, (x, y), (x + w, y + w), color, 1) # 繪製矩形cv2.imshow("Image", img) # 顯示圖像cv2.waitKey(0)cv2.destroyAllWindows() # 釋放所有的窗體資源

使用訓練分類器查找人臉

在使用OpenCV的人臉檢測之前,需要一個人臉訓練模型,格式是xml的,我們這裡使用OpenCV提供好的人臉分類模型xml,下載地址:github.com/opencv/openc 可全部下載到本地,本人存放的路徑是:C:Python36Libsite-packagesopencv-masterdatahaarcascades.

完整實現代碼:

import cv2filepath = "img/xingye-1.jpg"img = cv2.imread(filepath) # 讀取圖片gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 轉換灰色# OpenCV人臉識別分類器classifier = cv2.CascadeClassifier( "C:Python36Libsite-packagesopencv-masterdatahaarcascadeshaarcascade_frontalface_default.xml")color = (0, 255, 0) # 定義繪製顏色# 調用識別人臉faceRects = classifier.detectMultiScale( gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))if len(faceRects): # 大於0則檢測到人臉 for faceRect in faceRects: # 單獨框出每一張人臉 x, y, w, h = faceRect # 框出人臉 cv2.rectangle(img, (x, y), (x + h, y + w), color, 2) # 左眼 cv2.circle(img, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8), color) #右眼 cv2.circle(img, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8), color) #嘴巴 cv2.rectangle(img, (x + 3 * w // 8, y + 3 * h // 4), (x + 5 * w // 8, y + 7 * h // 8), color)cv2.imshow("image", img) # 顯示圖像c = cv2.waitKey(10)cv2.waitKey(0)cv2.destroyAllWindows()

分類器classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))參數說明

gray:轉換的灰圖

scaleFactor:圖像縮放比例,可理解為相機的X倍鏡

minNeighbors:對特徵檢測點周邊多少有效點同時檢測,這樣可避免因選取的特徵檢測點太小而導致遺漏

minSize:特徵檢測點的最小尺寸

推薦課程:OpenCV+TensorFlow_全面學習計算機視覺-慕課網實戰

作者:vipstone

鏈接:imooc.com/article/30141

來源:慕課網

本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作


推薦閱讀:

【重磅】認證作者招募 | 打造個人品牌 so easy !

OpenCV環境搭建

慕課網:2018 AI、機器學習、深度學習與 Tensorflow 相關優秀書籍、課程、示例鏈接集錦

慕課網:給編程初學者的一些建議

SpringBoot開發案例從0到1構建分散式秒殺系統


推薦閱讀:

谷歌大腦的全球之旅:日本東京達成
人工智慧技術在運動康復中的應用
谷歌、微軟、Facebook等2018最新面試題分享
下一代AI客廳娛樂設備什麼樣?最接近真相的答案來了
【第四期】AI Talk:AI 計算,從單機到集群(中)

TAG:圖像識別 | Python | 人工智慧 |