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 python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- WPF呼叫攝像頭,對圖片相似度識別 1.0
- 教你如何利用python呼叫攝像頭Python
- android opencv 前置攝像頭AndroidOpenCV
- html5呼叫攝像頭截圖HTML
- Android呼叫攝像頭拍照Android
- Unity 3d UI獲取外部攝像頭拍攝Unity3DUI
- jQuery webcam plugin呼叫攝像頭jQueryWebPlugin
- 安卓呼叫攝像頭拍照安卓
- 『OpenCV-Python』獲取圖片的基本引數資訊OpenCVPython
- 擷取圖片生成頭像外掛
- html5呼叫攝像頭功能HTML
- HTML5如何呼叫攝像頭?HTML
- python opencv讀取網路圖片PythonOpenCV
- python版opencv:如何用筆記本攝像頭拍照儲存PythonOpenCV筆記
- android studio之簡單呼叫攝像頭並且獲取其照片Android
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- 照片系列之android呼叫攝像頭拍照Android
- 安卓開發之呼叫攝像頭安卓
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- 如何使用PYTHON操作攝像頭Python
- Android呼叫攝像頭拍照並顯示照片Android
- 人員跌倒檢測攝像頭
- 基於人工智慧的摔倒識別攝像頭人工智慧
- 搭建一個攝像頭應用程式 應用程式內部攝像頭
- 使用基於 WebRTC 的 JavaScript API 在瀏覽器環境裡呼叫本機攝像頭WebJavaScriptAPI瀏覽器
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- 讀取多個(海康\大華)網路攝像頭的視訊流 (使用opencv-python),解決實時讀取延遲問題OpenCVPython
- Nebulosity 4 for Mac(攝像頭影像捕獲工具)Mac
- opencv VideoCapture 不能採集uvc攝像頭的MJPEG 資料OpenCVIDEAPT
- matlab呼叫攝像頭並儲存成幀的形式Matlab
- Jetson AGX Xavier ROS下呼叫USB單目攝像頭ROS
- openCV開啟高畫質攝像頭卡頓的問題OpenCV
- Python - opencv-python 獲取影片尺寸PythonOpenCV
- 簡單介紹C#獲取攝像頭拍照顯示影像的方法C#
- 攝像頭操作指南
- 【音影片】攝像頭