close

學習英文與了解天下事,為什麼要讀時代雜誌呢?

閱讀世界新鮮事的人所擁有的國際觀是非常驚人的

當你開始閱讀time時代雜誌增加英文閱讀能力,同時也可以提昇世界觀

因此無論出社會還是在學時,推薦學英文的其中一種方法就是大量閱讀time時代雜誌

藉此提高外文的閱讀理解能力,提高英文文章與新聞的理解力,time時代雜誌是一個非常好的讀物!

因為這本雜誌所囊括世界各地最新的奇人異事,可以讓眼界變得更寬廣

而且許多最新片語詞彙,不見得你在字典可以找到,很多都是新創名詞

讓你的頭腦可以跟著世界的巨輪一起前進

只要閱讀1-2個月,你會發現你看原文的速度至少快上2-3倍。

除了TIME雜誌外,經濟學人,科學人,國家地理中文都很推薦

下面的介紹,可以讓你快速了解雜誌的特色

↓↓↓TIME雜誌限量特惠的優惠按鈕↓↓↓

PTT鄉民限量,團購,限時,週年慶,手把手教使用python實現人臉識別禮物,優惠,特價,開箱,比價手把手教使用python實現人臉識別,活動,好評,推薦

手把手教使用python實現人臉識別01網友哪裡便宜,採購,優缺點,試用,手把手教使用python實現人臉識別好用,手把手教使用python實現人臉識別CP值,經驗,好康,集購,下殺,免比價,去哪買?,

名人推薦介紹,手把手教使用python實現人臉識別部落客,排行,體驗,精選,限定,折扣,手把手教使用python實現人臉識別折價卷,ptt,蝦皮拍賣,Dcard推薦評比開箱

選購指南!手把手教使用python實現人臉識別這新知
如何選購手把手教使用python實現人臉識別這新知
新手選購有技巧!部落客大推手把手教使用python實現人臉識別這新知
手把手教使用python實現人臉識別好用
這個這新知手把手教使用python實現人臉識別你不能錯過
熱門的手把手教使用python實現人臉識別好用?如何選購

↓↓↓下方有其他推薦產品與服務讓你選喔↓↓↓

熱點新知搶先報

 

什麼是人臉識別 人臉識別,是基於人的臉部特徵信息進行身份識別的一種生物識別技術。用攝像機或攝像頭採集含有人臉的圖像或視頻流,並自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部識別的一系列相關技術,通常也叫做人像識別、面部識別。 目前的人臉識別技術已經非常成熟了,還發展成3D人臉識別。而且現在各大廠商也都提供了人臉識別的API接口供我們調用,可以說幾行代碼就可以完成人臉識別。但是人臉識別的根本還是基於圖像處理。在Python中最強大的圖像處理庫就是OpenCV。 OpenCV簡介 OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上。OpenCV可用於開發實時的圖像處理、計算機視覺以及模式識別程序。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。 OpenCV基本使用 安裝 pip install opencv-python # 基礎庫 pip install opencv-contrib-python # 擴展庫 pip install opencv-python-headless 讀取圖片 讀取和顯示圖片是最基本的操作了,OpenCV當中使用imread和imshow實現該操作 import cv2 as cv # 讀取圖片,路徑不能含有中文名,否則圖片讀取不出來 image = cv.imread('1111.jpg') # 顯示圖片 cv.imshow('image', image) # 等待鍵盤輸入,單位是毫秒,0表示無限等待 cv.waitKey(0) # 因為最終調用的是C++對象,所以使用完要釋放內存 cv.destroyAllWindows() ... 將圖片轉為灰度圖 OpenCV中數百中關於不同色彩控制項之間轉換的方法。目前最常用的有三種:灰度、BGR、HSV。 灰度色彩空間是通過去除彩色信息來講圖片轉換成灰階,灰度圖會大量減少圖像處理中的色彩處理,對人臉識別很有效。 BGR每個像素都由一個三元數組來表示,分別代碼藍、綠、紅三種顏色。python中還有一個庫PIL,讀取的圖片通道是RGB,其實是一樣的,只是顏色順序不一樣 HSV,H是色調,S是飽和度,V是黑暗的程度 將圖片轉換為灰度圖 import cv2 as cv # 讀取圖片,路徑不能含有中文名,否則圖片讀取不出來 image = cv.imread('1111.jpg') # cv2讀取圖片的通道是BGR, # PIL讀取圖片的通道是RGB # code選擇COLOR_BGR2GRAY,就是BGR to GRAY gray_image = cv.cvtColor(image, code=cv.COLOR_BGR2GRAY) # 顯示圖片 cv.imshow('image', gray_image) # 等待鍵盤輸入,單位是毫秒,0表示無限等待 cv.waitKey(0) # 因為最終調用的是C++對象,所以使用完要釋放內存 cv.destroyAllWindows() ... 繪製矩形 image = cv.imread('1111.jpg') x, y, w, h = 50, 50, 80, 80 # 繪製矩形 cv.rectangle(image, (x, y, x+w, y+h), color=(0, 255, 0), thickness=2) # 繪製圓形 cv.circle(image, center=(x + w//2, y + h//2), radius=w//2, color=(0, 0, 255), thickness=2) cv.imshow('image', image) cv.waitKey(0) cv.destroyAllWindows() ... 人臉檢測 人臉檢測實際上是對圖像提取特徵,Haar特徵是一種用於實現實時人臉跟蹤的特徵。每個Haar特徵都描述了相鄰圖像區域的對比模式。比如邊、定點和細線都能生成具有判別性的特徵。OpenCV給我們提供了Haar特徵數據,在cv2/data目錄下,使用特徵數據的方法def detectMultiScale(self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None) scaleFactor: 指定每個圖像比例縮小多少圖像 minNeighbors: 指定每個候選矩形必須保留多少個鄰居,值越大說明精度要求越高 minSize:檢測到的最小矩形大小 maxSize: 檢測到的最大矩形大小 檢測圖片中人臉 import os import cv2 as cv def face_detect_demo(image): # 將圖片轉換為灰度圖 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 加載特徵數據 face_detector = cv.CascadeClassifier(os.path.join(cv.data.haarcascades, 'haarcascade_frontalface_default.xml')) faces = face_detector.detectMultiScale(gray) for x, y, w, h in faces: cv.rectangle(image, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2) # 讀取圖片,路徑不能含有中文名,否則圖片讀取不出來 image = cv.imread('2222.jpg') face_detect_demo(image) # 顯示圖片 cv.imshow('image', image) # 等待鍵盤輸入,單位是毫秒,0表示無限等待 cv.waitKey(0) # 因為最終調用的是C++對象,所以使用完要釋放內存 cv.destroyAllWindows() ... 採用默認參數,檢測人臉數據不全,需要調整detectMultiScale函數的參數,調整為faces = face_detector.detectMultiScale(gray, scaleFactor=1.02, minNeighbors=3) ... 我們發現除了檢測到人臉數據,還有一些其他的髒數據,這個時候可以列印檢測出的人臉數據位置和大小 faces = face_detector.detectMultiScale(gray, scaleFactor=1.02, minNeighbors=3) for x, y, w, h in faces: print(x, y, w, h) # 列印每一個檢測到的數據位置和大小 cv.rectangle(image, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2) ... 從大小中我們看到最大的兩個矩形,剛好是人臉數據,其餘都是髒數據,那麼繼續修改函數參數faces = face_detector.detectMultiScale(gray, scaleFactor=1.02, minNeighbors=3, minSize=(80, 80)) ... 檢測視頻中人臉 視頻就是一張一張的圖片組成的,在視頻的幀上面重複這個過程就能完成視頻中的人臉檢測了。視頻讀取OpenCV為我們提供了函數VideoCapture,參數可以是視頻文件或者0(表示調用攝像頭) import cv2 as cv # 人臉檢測 def face_detect_demo(image): try: # 將圖片轉換為灰度圖 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 加載特徵數據 face_detector = cv.CascadeClassifier(os.path.join(cv.data.haarcascades, 'haarcascade_frontalface_default.xml')) faces = face_detector.detectMultiScale(gray) for x, y, w, h in faces: print(x, y, w, h) cv.rectangle(image, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2) except Exception as e: pass cap = cv.VideoCapture('人臉識別.mp4') while cap.isOpened(): flag, frame = cap.read() face_detect_demo(frame) cv.imshow('result', frame) if ord('q') == cv.waitKey(5): break cap.realse() cv.destroyAllWindows() ... 這個我們是做的人臉識別,怎麼把愛好都識別了,這麼先進嗎?很顯然這不太符合我們的要求,愛好只能藏在心裡,你給我檢測出來就不行了。所以我們必須要進行優化處理。OpenCV為我們提供了一個機器學習的小模塊,我們可以訓練它,讓它只識別我們需要的部分,不要亂猜測。 訓練數據 訓練數據就是我們把一些圖片交給訓練模型,讓模型熟悉她,這樣它就能更加準確的識別相同的圖片。訓練的數據一般我們可以從網上搜索:人臉識別資料庫,或者從視頻中保存美幀的數據作為訓練集。所有的人臉識別算法在他們的train()函數中都有兩個參數:圖像數組和標籤數組。這些標籤標示進行識別時候的人臉ID,根據ID可以知道被識別的人是誰。 獲取訓練集 從視頻中每隔5幀截取一個圖片,保存成圖片 import cv2 cap = cv2.VideoCapture('人臉識別.mp4') number = 100 count = 1 while cap.isOpened() and number > 0: flag, frame = cap.read() if not flag: break if count % 5 == 0: # 按照視頻圖像中人臉的大體位置進行裁剪,只取人臉部分 img = frame[70:280, 520:730] cv2.imwrite('data/{}.png'.format(number), img) number -= 1 count += 1 cap.release() cv2.destroyAllWindows() ... 使用LBPH訓練模型 def getImageAndLabels(path_list): faces = [] ids = [] image_paths = [os.path.join(path_list, f) for f in os.listdir(path_list) if f.endswith('.png')] face_detector = cv.CascadeClassifier(os.path.join(cv.data.haarcascades, 'haarcascade_frontalface_default.xml')) for image in image_paths: img = cv.imread(image) gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) faces = face_detector.detectMultiScale(gray) _id = int(os.path.split(image)[1].split('.')[0]) for x, y, w, h in faces: faces.append(gray[y:y+h, x:x+w]) ids.append(_id) return faces, ids faces, ids = getImageAndLabels('data') # 訓練 recognizer = cv.face.LBPHFaceRecognizer_create() recognizer.train(faces, np.array(ids)) # 保存訓練特徵 recognizer.write('trains/trains.yml') 基於LBPH的人臉識別 LBPH將檢測到的人臉分為小單元,並將其與模型中的對應單元進行比較,對每個區域的匹配值產生一個直方圖。調整後的區域中調用predict函數,該函數返回兩個元素的數組,第一個元素是所識別的個體標籤,第二個元素是置信度評分。所有的算法都有一個置信度評分閾值,置信度評分用來衡量圖像與模型中的差距,0表示完全匹配。LBPH有一個好的識別參考值要低於50。基本步驟為: cv.VideoCapture讀取視頻 Haar算法檢測人臉數據 基於LBPH訓練集得到準確人臉數據,並輸出標記此人是誰 按置信度取準確度高的人臉標記出來 import os import cv2 as cv def face_detect_demo(image): try: global number # 將圖片轉換為灰度圖 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 加載特徵數據 faces = face_detector.detectMultiScale(gray, scaleFactor=1.02, minNeighbors=3) for x, y, w, h in faces: # 獲取置信度,大於80表示取值錯誤 _id, confidence = recognizer.predict(gray[y:y + h, x:x + w]) if confidence < 80: cv.rectangle(image, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2) except Exception as e: pass def check_face(): cap = cv.VideoCapture('人臉識別.mp4') while cap.isOpened(): flag, frame = cap.read() if not flag: break face_detect_demo(frame) cv.imshow('img', frame) cv.waitKey(2) cv.destroyAllWindows() if __name__ == '__main__': # 加載訓練數據文件 recognizer = cv.face.LBPHFaceRecognizer_create() recognizer.read('trains/trains.yml') face_detector = cv.CascadeClassifier(os.path.join(cv.data.haarcascades, 'haarcascade_frontalface_default.xml')) check_face() ... 總結 通過上面一步步的學習,你是不是對OpenCV人臉識別有個基本的認識了呢?但是我們也看到了,整個人臉識別的主要算法還是基於Haar,而且準確度並不是特別高,主要是會檢測出很多非人臉的數據。LBPH是讓我們給某個人臉進行標記,告訴我們他是誰,並沒有提高實際的檢測準確度。現在機器學習是非常火爆的,基於OpenCV的機器學習人臉識別也精確度也很高,下次我們在來對比幾種機器學習人臉識別的庫。

 

D15RF15FVFR5RR151EFE

 

 

文章來源取自於:

 

 

每日頭條 https://kknews.cc/tech/jaolpmy.html

如有侵權,請來信告知,我們會立刻下架。

DMCA:dmca(at)kubonews.com

聯絡我們:contact(at)kubonews.com


2020國際書展台北哪裡訂家庭育兒雜誌新竹哪裡訂台時亞洲台中哪裡訂國際書展TIME美國時代雜誌哪裡訂便宜
Forbes台北哪裡訂 聚尚美時尚鬼才Allen讓你的形象成為你的競爭力國際書展國家地理雜誌新竹哪裡訂 索尼推出全新8K電視Z8H,同時更新5個系列電視產品 鈦快訊Fortune哪裡訂便宜 你見過哪些不靠譜的副業?網友:兼職模特,月虧2000,笑死我了國際書展美國時代雜誌南投哪裡訂 光纖的發展故事

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 4f8eww589 的頭像
    4f8eww589

    4f8eww589的部落格

    4f8eww589 發表在 痞客邦 留言(0) 人氣()