python使用opencv調用攝像頭操作


轉自:

Python3使用opencv調用攝像頭錄制高清視頻

教你如何利用python調用攝像頭

 

#pip3 install opencv-python
import cv2
from datetime import datetime

FILENAME = 'myvideo.avi'
WIDTH = 1280
HEIGHT = 720
FPS = 24.0

# 必須指定CAP_DSHOW(Direct Show)參數初始化攝像頭,否則無法使用更高分辨率
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 設置攝像頭設備分辨率
cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)
# 設置攝像頭設備幀率,如不指定,默認600
cap.set(cv2.CAP_PROP_FPS, 24)
# 建議使用XVID編碼,圖像質量和文件大小比較都兼顧的方案
fourcc = cv2.VideoWriter_fourcc(*'XVID')

out = cv2.VideoWriter(FILENAME, fourcc, FPS, (WIDTH, HEIGHT))

start_time = datetime.now()

while True:
    ret, frame = cap.read()
    if ret:
        out.write(frame)
        # 顯示預覽窗口
        cv2.imshow('Preview_Window', frame)
        # 錄制5秒后停止
        if (datetime.now()-start_time).seconds == 5:
            cap.release()
            break
        # 監測到ESC按鍵也停止
        if cv2.waitKey(3) & 0xff == 27:
            cap.release()
            break

out.release()
cv2.destroyAllWindows()

  

# 1. 打開攝像頭
import cv2
import numpy as np
 
def video_demo():
  capture = cv2.VideoCapture(0)#0為電腦內置攝像頭
  while(True):
    ret, frame = capture.read()#攝像頭讀取,ret為是否成功打開攝像頭,true,false。 frame為視頻的每一幀圖像
    frame = cv2.flip(frame, 1)#攝像頭是和人對立的,將圖像左右調換回來正常顯示。
    cv2.imshow("video", frame)
    c = cv2.waitKey(50)
    if c == 27:
      break
video_demo()
cv2.destroyAllWindows()


#2. 打開攝像頭並截圖
import cv2
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打開攝像頭
 
while (1):
  # get a frame
  ret, frame = cap.read()
  frame = cv2.flip(frame, 1) # 攝像頭是和人對立的,將圖像左右調換回來正常顯示
  # show a frame
  cv2.imshow("capture", frame) # 生成攝像頭窗口
 
  if cv2.waitKey(1) & 0xFF == ord('q'): # 如果按下q 就截圖保存並退出
    cv2.imwrite("test.png", frame) # 保存路徑
    break
 
cap.release()
cv2.destroyAllWindows()


#3. 打開攝像頭並定時截圖
def video_demo():
  print('開始')
  cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 電腦自身攝像頭
  i = 0#定時裝置初始值
  photoname = 1#文件名序號初始值
 
  while True:
    i = i + 1
    reg, frame = cap.read()
    frame = cv2.flip(frame, 1) # 圖片左右調換
    cv2.imshow('window', frame)
 
    if i == 50: # 定時裝置,定時截屏,可以修改。
 
      filename = str(photoname) + '.png' # filename為圖像名字,將photoname作為編號命名保存的截圖
      cv2.imwrite('C:/Users/Administrator/Desktop/m' + '\\' + filename, frame) # 截圖 前面為放在桌面的路徑 frame為此時的圖像
      print(filename + '保存成功') # 打印保存成功
      i = 0 # 清零
 
      photoname = photoname + 1
      if photoname >= 20: # 最多截圖20張 然后退出(如果調用photoname = 1 不用break為不斷覆蓋圖片)
        # photoname = 1
        break
    if cv2.waitKey(1) & 0xff == ord('q'):
      break
  # 釋放資源
  cap.release()
 
video_demo()
cv2.destroyAllWindows()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM