1. 程式人生 > >Keras搭建CNN進行人臉識別系列(二)--配置,獲取實時視訊流

Keras搭建CNN進行人臉識別系列(二)--配置,獲取實時視訊流

1.準備工作

1)首先需要準備一個USB攝像頭,能夠支援Ubuntu之類的linux作業系統;

2)PC機上安裝好Ubuntu14以上64位版本(儘量雙系統不要虛擬機器,不然模型訓練速度會慢得像蝸牛),可以安裝win7/win10,但我沒有試過在64位win系統上安裝tensorflow,雖然tensorflow已經支援win 64位系統;

3)請確定python3已安裝,我給的程式碼都是在python3下除錯通過的,python2只是簡單試過,不保證在python2下能正常執行;

4)安裝Tensorflow,如果你是獨顯,且支援CUDA,請安裝GPU版本,否則選擇CPU版本,我的機器安裝的是GPU版本,OS是Ubuntu16.04麒麟,安裝Tensorflow的操作說明請問度娘或谷歌,又或者參考本人的另一篇博文:

5)安裝opencv2,請安裝openCV3.0以上版本(該版本支援python3和python2),參考如下兩個連結:

操作指令以第一個連結為準,給第二個的原因是它給出了OpenCV3.0的安裝方法,第一個是2.14的且是支援python2的,但第一個給出的指令已經足夠用了,第二個博文指令囉嗦,當遇到如何支援python3的問題時供參考用;

6)安裝keras、sklearn、PIP等,它們的安裝說明網上有的是,也簡單,這裡就不多說了;

以上準備工作關鍵是前5步,後面第6步可以暫時不作操作,當執行程式時如果提示某個模組無法匯入,再安裝該模組也可。

2.獲取並顯示USB攝像頭實時視訊

import cv2
def make_video():
    cap = cv2.VideoCapture(0)

    fourcc = cv2.VideoWriter_fourcc(*"DIVX")
    out = cv2.VideoWriter('test.avi',fourcc,20.0,(640,480))
    while(cap.isOpened()):
        ret,frame = cap.read()
        if ret:
            out.write(frame)

            cv2.imshow('frame',frame)

            if(cv2.waitKey(1) & 0xFF == ord('q')):
                break

        else:
            break
    cap.release()
    out.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    make_video()

這裡我們呼叫opencv包cv2,這個cv2的包可以呼叫攝像頭。

cap = cv2.VideoCapture(0)

這個語句的引數為cv2.VideoCapture(camera_index),camera_index可以是0,代表開啟的攝像頭是筆記本自帶的前置攝像頭,如果有額外的USB攝像頭,這個camer_index可以是1,2,3......如果不知道對應裝置的標號,你可以調整這個引數進行除錯。

以上為程式碼執行效果下面我們進行以下內容。