Python基於opencv呼叫攝像頭獲取個人圖片
接觸影象領域的應該對於opencv都不會感到陌生,這個應該算是功能十分強勁的一個演算法庫了,當然了,使用起來也是很方便的,之前使用Windows7的時候出現多該庫難以安裝成功的情況,現在這個問題就不存在了,需要安裝包的話可以去我的資源中下載使用,使用pip安裝方式十分地便捷。
今天主要是基於opencv模組來呼叫筆記本的內建攝像頭,然後從視訊流中獲取到人臉的影象資料用於之後的人臉識別專案,也就是為了構建可用的資料集。整個實現過程並不複雜,具體如下:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能: Python opencv呼叫攝像頭獲取個人圖片
使用方法:
啟動攝像頭後需要藉助鍵盤輸入操作來完成圖片的獲取工作
c(change): 生成儲存目錄
p(photo): 執行截圖
q(quit): 退出拍攝
OpenCV簡介
1、videoCapture()方法開啟攝像
攝像頭變數 cv2.VideoCapture(n) n為整數內建攝像頭為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 #圖片計數索引
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) #前置攝像頭獲取的畫面是非鏡面的,即左手會出現在畫面的右側,此處使用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/')
上述程式碼的執行環境需要是Python2,因為python2中才有reload方法,去掉那些語句就可以在Python3中執行了,我們在Python2的環境中執行結果截圖如下:
我的儲存路徑是data,按q退出後,進入data資料夾下就可以看到自己的“靚照”了哈,好了資料集準備到此結束,接下來準備實戰人臉識別。
相關文章
- WebRTC從攝像頭獲取圖片傳入canvasWebCanvas
- 《OpenCV設定和獲取攝像頭引數》OpenCV
- Python opencv USB攝像頭 讀寫PythonOpenCV
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- WPF呼叫攝像頭,對圖片相似度識別 1.0
- html5呼叫攝像頭截圖HTML
- 教你如何利用python呼叫攝像頭Python
- android opencv 前置攝像頭AndroidOpenCV
- 安卓呼叫攝像頭拍照安卓
- Android呼叫攝像頭Android
- OpenCV攝像頭標定(待修改)OpenCV
- Unity 3d UI獲取外部攝像頭拍攝Unity3DUI
- Android呼叫攝像頭拍照Android
- jQuery webcam plugin呼叫攝像頭jQueryWebPlugin
- Android 呼叫攝像頭拍照Android
- Android如何呼叫攝像頭Android
- Ubuntu下編譯安裝OpenCV 2.4.7並讀取攝像頭Ubuntu編譯OpenCV
- OPENCV3.0 單目攝像頭標定(使用官方自帶的標定圖片)OpenCV
- html5呼叫攝像頭功能HTML
- 安卓開發之呼叫攝像頭安卓
- 擷取圖片生成頭像外掛
- 獲取本地圖片或拍照,進行頭像圖片的上傳的工具類地圖
- 關於基於OPENCV攝像機標定的一點感受OpenCV
- html5呼叫手機攝像頭HTML
- C#實現攝像頭呼叫、拍照C#
- python版opencv:如何用筆記本攝像頭拍照儲存PythonOpenCV筆記
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- python opencv讀取網路圖片PythonOpenCV
- 照片系列之android呼叫攝像頭拍照Android
- Android開發之呼叫攝像頭拍照Android
- html5呼叫攝像頭實現拍照HTML
- android studio之簡單呼叫攝像頭並且獲取其照片Android
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- 如何使用PYTHON操作攝像頭Python
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- Android呼叫攝像頭拍照並顯示照片Android
- Android 呼叫攝像頭功能【拍照與視訊】Android
- 使用基於 WebRTC 的 JavaScript API 在瀏覽器環境裡呼叫本機攝像頭WebJavaScriptAPI瀏覽器