欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python+OpenCV的人臉特征定位程序-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線(xiàn)動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

10余年的麻城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整麻城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“麻城網(wǎng)站設(shè)計(jì)”,“麻城網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

這篇文章將為大家詳細(xì)講解有關(guān)Python+OpenCV的人臉特征定位程序,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在最近刷今日頭條以及其他媒體軟件時(shí),經(jīng)常會(huì)發(fā)現(xiàn)一些AI換臉的視頻,于是我想,可不可以自己實(shí)現(xiàn)一個(gè)可以進(jìn)行人臉識(shí)別的軟件程序。我的具體流程是先配合python網(wǎng)絡(luò)爬蟲(chóng)先進(jìn)行萬(wàn)張PubFig人臉公共圖片的爬取,分析出圖片具體特征,然后再配合機(jī)器學(xué)習(xí)的OpenCV視覺(jué)庫(kù)進(jìn)行軟件的構(gòu)建。有一篇Github的文章講得很詳細(xì),大家可以參考:https://github.com/Hironsan/BossSensor。

本篇用一些動(dòng)漫人臉圖片,向大家展示基本的opencv庫(kù)的操作,以及用一些公共人臉數(shù)據(jù)進(jìn)行簡(jiǎn)單的人臉識(shí)別技術(shù)學(xué)習(xí)。

1.OpenCV簡(jiǎn)介

OpenCV是一個(gè)開(kāi)源的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),提供的有python接口,并實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。

2.需要安裝的包

本篇先安裝Opencv和numpy,pandas等數(shù)據(jù)分析包即可,如果感覺(jué)麻煩的話(huà),可以直接安裝Anaconda科學(xué)包(數(shù)據(jù)分析,挖掘,機(jī)器學(xué)習(xí)庫(kù)合集),安裝與不同編譯器配置環(huán)境過(guò)程這里就不講解了。

下載地址(官網(wǎng)太慢了,推薦下面的地址):https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/。python3.5以上的需要下載opencv_python-4.0之類(lèi)的版本,這里用到的是opencv_python-4.0.0.21-cp37-cp37m-win_amd64.whl這個(gè)文件。

安裝完后,我們先用下面的代碼輸出一個(gè)圖片:

import cv2
img = cv2.imread("1.jpg", 1)
cv2.imshow("1", img)
cv2.waitKey()

3.初步人臉識(shí)別

由于本篇文章是第一篇,因此這里先簡(jiǎn)單的展示一下opencv的一些機(jī)器視覺(jué)的基礎(chǔ)方法,下面就進(jìn)行介紹。

(1)導(dǎo)入人臉圖片,這里用一張動(dòng)漫圖

Python+OpenCV的人臉特征定位程序

代碼和上面的類(lèi)似,更改圖片即可:

import cv2
img = cv2.imread("firstPer.jpg", 1)
cv2.imshow("1", img)
cv2.waitKey()
cv2.destroyAllWindows()

這里我們把這段代碼封裝成一個(gè)函數(shù):

def viewImage(image, name_of_window):
    '''
    image:圖像對(duì)象
    name_of_window:圖像窗口名稱(chēng)
    '''
    cv2.namedWindow(name_of_window, cv2.WINDOW_NORMAL)
    cv2.imshow(name_of_window, image)
    cv2.waitKey()
    cv2.destroyAllWindows()

(2)一些基礎(chǔ)圖像處理的方法

cropped:cropped = image[y:y+h, x:x+w],就是以(y, x)為起點(diǎn),裁剪大小為(h, w)的圖像,以左上角為起點(diǎn),豎直向下的方向?yàn)閥軸,橫向?yàn)閤軸。

resized:dim = (width, height)

     resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)

調(diào)整圖像的大小。

用下面的代碼分別進(jìn)行這兩種圖像的處理:

img = cv2.imread("firstPer.jpg", 1)
# 裁剪圖片大小,裁剪100范圍的圖片
cropped = img[0:100, 0:100]
viewImage(cropped,"firstPer")

Python+OpenCV的人臉特征定位程序

img = cv2.imread("firstPer.jpg", 1)
scale_percent = 30    #調(diào)整30%的大小
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
viewImage(resized,"firstPer")

Python+OpenCV的人臉特征定位程序

還有一一些用的操作方法,就是旋轉(zhuǎn),調(diào)節(jié)亮度,變模糊/平滑,繪制邊框,繪制線(xiàn)段等,在這里并不是進(jìn)行圖像處理,因此就先不先向大家講解。哈哈。

(3)圖像灰度處理

在進(jìn)行人臉識(shí)別時(shí),好多地方都先進(jìn)行圖像變灰度的操作,這里也給大家介紹一下:

這里有一個(gè)閾值函數(shù),gray_image,將所有圖像變?yōu)楸?27更暗直至0或者增加亮度到255,將圖像的彩色邊框的內(nèi)容略過(guò)。

灰度處理代碼:

gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
viewImage(gray_image,"gray Image")

結(jié)果:

Python+OpenCV的人臉特征定位程序

亮度彩色閾值處理代碼:

one,threshold_image = cv2.threshold(img, 127, 255, 0)
viewImage(threshold_image,"firstPer")

結(jié)果:

Python+OpenCV的人臉特征定位程序

主要是有后面的三個(gè)參數(shù)控制,大家有興趣可以自行學(xué)習(xí)。

(4)人臉識(shí)別初講

如果我們需要進(jìn)行人臉識(shí)別,需要下載一些opencv配置文件,地址為:https://github.com/opencv/opencv/tree/master/data/haarcascades,這里我們用到的是haarcascade_frontalface_default.xml文件。用下面的代碼進(jìn)行檢測(cè):

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread("firstPer.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,           # 灰度圖
scaleFactor= 1.1,   # 縮放比例
minNeighbors= 2,    # 識(shí)別出一個(gè)人臉之前在當(dāng)前物體周?chē)枰獧z測(cè)的物體數(shù)目
minSize=(50, 50)    #窗口的大小
)
firstPer = format(len(faces)) + "faces detected!"
print(firstPer)# Draw a rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 255, 0), 2)
viewImage(img,firstPer)

detectMultiScale函數(shù)是一個(gè)檢測(cè)物體的通用函數(shù)。當(dāng)我們把它用于人臉檢測(cè)時(shí),它就會(huì)從圖像中檢測(cè)出人臉。

但是我們卻發(fā)現(xiàn),根本沒(méi)有檢測(cè)出我們可愛(ài)的小櫻的臉,這是為什么呢?不急,我們先用其他圖片檢測(cè):Python+OpenCV的人臉特征定位程序Python+OpenCV的人臉特征定位程序

Python+OpenCV的人臉特征定位程序Python+OpenCV的人臉特征定位程序

Python+OpenCV的人臉特征定位程序

再來(lái)一張最美的圖片:

Python+OpenCV的人臉特征定位程序

這時(shí)我們發(fā)現(xiàn),識(shí)別程序識(shí)別的時(shí)候會(huì)有兩個(gè)要注意的地方,第一個(gè)是動(dòng)漫圖片線(xiàn)條簡(jiǎn)單,有時(shí)候并不能識(shí)別出;而且識(shí)別的能力和圖片的清晰度也有關(guān)系。

關(guān)于Python+OpenCV的人臉特征定位程序就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前標(biāo)題:Python+OpenCV的人臉特征定位程序-創(chuàng)新互聯(lián)
本文地址:http://chinadenli.net/article16/dsgjdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站設(shè)計(jì)、微信公眾號(hào)、做網(wǎng)站、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)