- OpenCV Python 教程
- OpenCV Python - 首頁
- OpenCV Python - 概述
- OpenCV Python - 環境配置
- OpenCV Python - 讀取影像
- OpenCV Python - 寫入影像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 影像屬性
- OpenCV Python - 按位運算
- OpenCV Python - 形狀和文字
- OpenCV Python - 滑鼠事件
- OpenCV Python - 新增軌跡條
- OpenCV Python - 調整大小和旋轉
- OpenCV Python - 影像閾值化
- OpenCV Python - 影像濾波
- OpenCV Python - 邊緣檢測
- OpenCV Python - 直方圖
- OpenCV Python - 顏色空間
- OpenCV Python - 影像變換
- OpenCV Python - 影像輪廓
- OpenCV Python - 模板匹配
- OpenCV Python - 影像金字塔
- OpenCV Python - 影像加法
- OpenCV Python - 影像混合
- OpenCV Python - 傅立葉變換
- OpenCV Python - 捕獲影片
- OpenCV Python - 播放影片
- OpenCV Python - 從影片提取影像
- OpenCV Python - 從影像生成影片
- OpenCV Python - 人臉檢測
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特徵檢測
- OpenCV Python - 特徵匹配
- OpenCV Python - 數字識別
- OpenCV Python 資源
- OpenCV Python - 快速指南
- OpenCV Python - 資源
- OpenCV Python - 討論
OpenCV Python - 從攝像頭捕獲影片
透過使用 OpenCV 庫中的 **VideoCapture()** 函式,可以非常輕鬆地在 OpenCV 視窗中從攝像頭捕獲即時流。
此函式需要一個裝置索引作為引數。您的計算機可能連線了多個攝像頭。它們由從 0 開始的索引列舉,內建網路攝像頭為 0。該函式返回一個 VideoCapture 物件。
cam = cv.VideoCapture(0)
開啟攝像頭後,我們可以藉助 **read()** 函式讀取其連續幀。
ret,frame = cam.read()
read() 函式讀取下一個可用的幀並返回一個值(True/False)。此幀現在使用 **cvtColor()** 函式渲染為所需的色彩空間,並在 OpenCV 視窗中顯示。
img = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
# Display the resulting frame
cv.imshow('frame', img)
要將當前幀捕獲到影像檔案,可以使用 **imwrite()** 函式。
cv2.imwrite(“capture.png”, img)
要將來自攝像頭的即時流儲存到影片檔案,OpenCV 提供了 VideoWriter() 函式。
cv.VideoWriter( filename, fourcc, fps, frameSize)
fourcc 引數是影片編解碼器的標準化程式碼。OpenCV 支援各種編解碼器,例如 DIVX、XVID、MJPG、X264 等。fps 和 framesize 引數取決於影片捕獲裝置。
VideoWriter() 函式返回一個 VideoWrite 流物件,捕獲的幀將依次寫入迴圈中。最後,釋放幀和 VideoWriter 物件以完成影片的建立。
示例
以下示例從內建網路攝像頭讀取即時影片流並將其儲存到 output.avi 檔案。
import cv2 as cv
cam = cv.VideoCapture(0)
cc = cv.VideoWriter_fourcc(*'XVID')
file = cv.VideoWriter('output.avi', cc, 15.0, (640, 480))
if not cam.isOpened():
print("error opening camera")
exit()
while True:
# Capture frame-by-frame
ret, frame = cam.read()
# if frame is read correctly ret is True
if not ret:
print("error in retrieving frame")
break
img = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
cv.imshow('frame', img)
file.write(img)
if cv.waitKey(1) == ord('q'):
break
cam.release()
file.release()
cv.destroyAllWindows()
廣告