用樹莓派 + Python + OpenCV識別人臉 拍照並上傳到七牛雲
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/cuiran/article/details/85007662
這裡主要想通過識別人臉並上傳到七牛雲端儲存
首先是安裝七牛SDK
下載地址
ofollow,noindex" target="_blank">https://github.com/qiniu/python-sdk/releases
直接安裝:
pip install qiniu
或
easy_install qiniu
原始碼安裝:
#從Python SDK 下載地址下載原始碼 tar xvzf python-sdk-$VERSION.tar.gz cd python-sdk-$VERSION python setup.py install
在使用SDK 前,您需要一對有效的 AccessKey 和 SecretKey 簽名授權。
可以通過如下步驟獲得:
1、開通七牛開發者帳號
2、登入七牛開發者平臺,檢視 Access Key 和 Secret Key。
獲取Access Key 和 Secret Key 後,呼叫如下兩行程式碼進行初始化對接:
from qiniu import Auth q = Auth(access_key, secret_key)
上傳相關
# -*- coding: utf-8 -*- # flake8: noqa from qiniu import Auth, put_file, etag import qiniu.config #需要填寫你的 Access Key 和 Secret Key access_key = 'Access_Key' secret_key = 'Secret_Key' #構建鑑權物件 q = Auth(access_key, secret_key) #要上傳的空間 bucket_name = 'Bucket_Name' #上傳到七牛後儲存的檔名 key = 'my-python-logo.png' #生成上傳 Token,可以指定過期時間等 token = q.upload_token(bucket_name, key, 3600) #要上傳檔案的本地路徑 localfile = './sync/bbb.jpg' ret, info = put_file(token, key, localfile) print(info) assert ret['key'] == key assert ret['hash'] == etag(localfile)
對圖片上傳
# -*- coding: utf-8 -*- import cv2 import time from qiniu import Auth, put_file, etag, urlsafe_base64_encode import qiniu.config import os #需要填寫你的 Access Key 和 Secret Key access_key = '' #這裡的金鑰填上剛才我讓你記住的金鑰對 secret_key = '' #這裡的金鑰填上剛才我讓你記住的金鑰對 #構建鑑權物件 q = Auth(access_key, secret_key) #要上傳的空間 bucket_name = 'face' cap=cv2.VideoCapture(0) i=0 while(1): ret ,frame = cap.read() k=cv2.waitKey(1) if k==27: break elif k==ord('s'): localfile=str(i)+'.jpg' cv2.imwrite(localfile,frame) #上傳到七牛後儲存的檔名 key = '%s_%s_%s_%s_%s_%s.jpg'%(time.localtime()[0],time.localtime()[1],time.localtime()[2],time.localtime()[3],time.localtime()[4],time.localtime()[5]) #生成上傳 Token,可以指定過期時間等 token = q.upload_token(bucket_name, key, 3600) #要上傳檔案的本地路徑 ret, info = put_file(token, key, localfile) print(info) assert ret['key'] == key assert ret['hash'] == etag(localfile) i+=1 elif k==ord('q'): break cv2.imshow("capture", frame) cap.release() cv2.destroyAllWindows()
給出識別人臉的程式碼
import cv2 cap = cv2.VideoCapture(0) # 使用第5個攝像頭(我的電腦插了5個攝像頭) face_cascade = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml') # 載入人臉特徵庫 while(True): ret, frame = cap.read() # 讀取一幀的影象 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 轉灰 faces = face_cascade.detectMultiScale(gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5, 5)) # 檢測人臉 for(x, y, w, h) in faces: cv2.rectangle(gray, (x, y), (x + w, y + h), (0, 255, 0), 2) # 用矩形圈出人臉 cv2.imshow('Face Recognition', gray) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 釋放攝像頭 cv2.destroyAllWindows()