2016-10-22 30 views
0

python使用網絡攝像頭拍攝快照(外部或內部),這裏是新的,也是opencv的新增內容。 我有這個項目 - 設計一個應用程序,可以與我的電腦攝像頭連接並拍攝快照並錄製視頻。 到目前爲止好這個據我可以去使用opencv

import cv2 as cv 
import numpy 

cv.namedWindow ("camera", 1) 

capture = cv.VideoCapture (0) 

while True: 
    ret, frame = capture.read() 
    img = cv.cvtColor (frame, cv.COLOR_BGR2BGRA) 
    cv.imshow ("camera", img) 
    if cv.waitKey(10) & 0XFF == ord ("q") 
     break 
capture.release() 
cv.destroyAllWindows() 

現在我覺得我想使用cv.VideoCapture.grab() 和cv.VideoCapture.retrieve() 但老實說,我不知道我將如何使用。 請我需要你的幫助

+0

作爲首發:Python的關鍵字不以大寫字母開頭。 –

+0

謝謝!我知道這是一個錯誤。 – Orion

回答

0

有怎麼辦,這裏一個很好的例子:

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html

下面的例子將採取快照每隔30秒,並將其保存到一個文件中具有獨特的時間戳:

import cv2 as cv 
import time 
import datetime 

cv.namedWindow("camera", 1) 
capture = cv.VideoCapture(0) 

while True: 
    ret, frame = capture.read() 
    frame = cv.cvtColor (frame, cv.COLOR_BGR2BGRA) 

    file = "C:\Python34\CpV\%s.png" % datetime.datetime.now().strftime("%d-%m-%y--%H-%M-%S") 
    cv.imwrite (file, frame) 
    #cv.imshow("camera", frame) 

    time.sleep(30) 
capture.release() 
cv.destroyAllWindows() 
+0

謝謝!但它與我沒有明確告訴我需要添加哪條線路相似,這將使我能夠拍攝快照或捕獲,或者像您使用手機或筆記本電腦一樣。 – Orion

+0

沒有測試它,因爲我目前沒有安裝opencv,在Mac上運行可能會很痛苦我已經編輯了上面的代碼,每隔30秒保存一次快照(只需將time.sleep(30)更改爲任意間隔你想要的)並保存到一個文件的日期/時間作爲文件名。更多的是你在追求什麼? – kbcool

+0

哇!謝謝!!! – Orion

0

好吧,我得編輯我的代碼和它的工作 檢查出來

import cv2 as cv 
import time 

cv.namedWindow("camera", 1) 
capture = cv.VideoCapture(0) 

while True: 
    ret, frame = capture.read() 
    frame = cv.cvtColor (frame, cv.COLOR_BGR2BGRA) 

    file = "C:\Python34\CpV\test.png" 
    cv.imwrite (file, frame) 
    cv.imshow("camera", frame) 

    #it takes a snapshot when "q" is pressed and closes 
    the window 
    if cv.waitKey(10) & 0xFF == ord ('q'): 
     break 
capture.release() 
cv.destroyAllWindows() 

這是就我所知,我需要編輯一點,使其簡潔明瞭。接下來的問題將是從網絡攝像頭錄製視頻。

因此,我仍然需要你的幫助。提前致謝。

+0

你應該編輯問題本身,而不是發佈你的更新作爲答案 –

0

使用下面的代碼來記錄攝像頭捕捉到文件:

import cv2 
import cv 
cap = cv2.VideoCapture(0) 
ret,img=cap.read() 
height , width , layers = img.shape  
fps=20 
video = cv2.VideoWriter("rec_out.avi", cv.CV_FOURCC(*'DIVX'), fps, (img.shape[1], img.shape[0])) 
while True: 

    ret,img=cap.read() 
    height , width , layers = img.shape 
     video.write(img) 
    cv2.imshow('Video', img) 
    #video.write(img) 
    if(cv2.waitKey(10) & 0xFF == ord('b')): 
      break 
+0

一點編輯,它的工作表示感謝 – Orion

+0

很好。請分享爲您工作的代碼和/或接受此代碼。 –