Python基于opencv調用攝像頭獲取個人圖片的實現(xiàn)方法
接觸圖像領域的應該對于opencv都不會感到陌生,這個應該算是功能十分強勁的一個算法庫了,當然了,使用起來也是很方便的,之前使用Windows7的時候出現(xiàn)多該庫難以安裝成功的情況,現(xiàn)在這個問題就不存在了,需要安裝包的話可以去我的資源中下載使用,使用pip安裝方式十分地便捷。
今天是基于opencv模塊來調用筆記本的內置攝像頭,然后從視頻流中獲取到人臉的圖像數(shù)據(jù)用于之后的人臉識別項目,也就是為了構建可用的數(shù)據(jù)集。整個實現(xiàn)過程并不復雜,具體如下:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能: Python opencv調用攝像頭獲取個人圖片
使用方法:
啟動攝像頭后需要借助鍵盤輸入操作來完成圖片的獲取工作
c(change): 生成存儲目錄
p(photo): 執(zhí)行截圖
q(quit): 退出拍攝
OpenCV簡介
1、videoCapture()方法打開攝像
攝像頭變量 cv2.VideoCapture(n) n為整數(shù)內置攝像頭為0,若有其他攝像頭則依次為1,2,3,...
cap=cv2.VideoCapture(0) 打開內置攝像頭
2、cap.isOpened()方法判斷攝像頭是否處于打開,返回結果為:True、False
3、ret,img=cap.read() 讀取圖像
布爾變量,圖像變量=cap.read()
4、cap.release() 釋放攝像頭
5、action=cv2.waitKey(n) 獲取用戶輸入,同時可獲取按鍵的ASCLL碼值
'''
import os
import cv2
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def cameraAutoForPictures(saveDir='data/'):
'''
調用電腦攝像頭來自動獲取圖片
'''
if not os.path.exists(saveDir):
os.makedirs(saveDir)
count=1 #圖片計數(shù)索引
cap=cv2.VideoCapture(0)
width,height,w=640,480,360
cap.set(cv2.CAP_PROP_FRAME_WIDTH,width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,height)
crop_w_start=(width-w)//2
crop_h_start=(height-w)//2
print 'width: ',width
print 'height: ',height
while True:
ret,frame=cap.read() #獲取相框
frame=frame[crop_h_start:crop_h_start+w,crop_w_start:crop_w_start+w] #展示相框
frame=cv2.flip(frame,1,dst=None) #前置攝像頭獲取的畫面是非鏡面的,即左手會出現(xiàn)在畫面的右側,此處使用flip進行水平鏡像處理
cv2.imshow("capture", frame)
action=cv2.waitKey(1) & 0xFF
if action==ord('c'):
saveDir=raw_input(u"請輸入新的存儲目錄:")
if not os.path.exists(saveDir):
os.makedirs(saveDir)
elif action==ord('p'):
cv2.imwrite("%s/%d.jpg" % (saveDir,count),cv2.resize(frame, (224, 224),interpolation=cv2.INTER_AREA))
print(u"%s: %d 張圖片" % (saveDir,count))
count+=1
if action==ord('q'):
break
cap.release() #釋放攝像頭
cv2.destroyAllWindows() #丟棄窗口
if __name__=='__main__':
cameraAutoForPictures(saveDir='data/')上述代碼的運行環(huán)境需要是Python2,因為python2中才有reload方法,去掉那些語句就可以在Python3中執(zhí)行了,我們在Python2的環(huán)境中執(zhí)行結果截圖如下:

我的保存路徑是data,按q退出后,進入data文件夾下就可以看到自己的“靚照”了哈,好了數(shù)據(jù)集準備到此結束,接下來準備實戰(zhàn)人臉識別。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
Python?wxPython庫實現(xiàn)文本框與按鈕交互
在Python的圖形用戶界面(GUI)開發(fā)中,wxPython是一個功能強大的庫,本文主要為大家介紹了如何使用wxPython庫實現(xiàn)文本框與按鈕交互,需要的可以了解下2025-01-01
解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題
本文主要介紹了解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
Python 循環(huán)語句之 while,for語句詳解
Python中有兩種循環(huán),分別為:for循環(huán)和while循環(huán)。 for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復處理的相同任務。2018-04-04
tensorflow 實現(xiàn)打印pb模型的所有節(jié)點
今天小編就為大家分享一篇tensorflow 實現(xiàn)打印pb模型的所有節(jié)點,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
詳解python使用canvas實現(xiàn)移動并綁定鍵盤
這篇文章主要為大家介紹了python使用canvas實現(xiàn)移動并綁定鍵盤,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12

