目錄
讀取視頻
從相機讀取影片
從檔案播放影片
保存視頻
總結
首頁 後端開發 Python教學 Python程式設計:使用相機捕捉、播放和保存視頻

Python程式設計:使用相機捕捉、播放和保存視頻

Apr 24, 2023 pm 12:43 PM
python 網路攝影機 播放影片

如何用 Python 捕获、播放和保存摄像头视频

前幾天有個讀者在粉絲群裡面提了一個問題:

Python 怎麼提升影片清晰度和對比?

我之前沒有涉及到使用 Python 操作影片這一方面,所以當時很抱歉地跟讀者朋友說暫未涉及。

這兩天想了下,感覺應該補一下這一塊的內容,一方面是增加自己涉獵的廣度,另一方面也可以給粉絲答疑解惑。

今天先分享 Python 操作影片最基本的操作,包括讀取和播放影片和保存影片。

讀取視頻

要捕獲視頻,你需要建立一個 VideoCapture 物件。它的參數可以是設備索引或視訊檔案的名稱。所以,我們讀取影片有兩種方式,分別是從相機中讀取影片和從檔案中讀取影片。

從相機讀取影片

對於有攝影機的設備,例如有攝影機的筆記型電腦,我們可以直接調起電腦的鏡頭,讀取攝影機的視訊串流。

import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
# 逐帧捕获
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
break
# 显示结果帧
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
# 完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()
登入後複製

這裡我向 VideoCapture 物件傳入了參數 0,表示裝置索引,裝置索引就是指定哪個攝影機的數字。正常情況下,一個攝影機會被連接(就像我的情況一樣)。所以我簡單地傳0。你可以透過傳遞1來選擇第二台相機,以此類推。

cap.isOpened() 用來判斷是否要捕捉到影片。

cap.read() 傳回布林值(True/ False)。如果正確讀取了幀,它將為True。因此,你可以透過檢查此回傳值來檢查影片的結尾。

cv.imshow 方法用來顯示影片的幀。我們播放影片的原理就是逐幀播放。

在最後,不要忘記透過 cap.release() 釋放俘虜。

運行這段程式碼,你就可以看到一個彈跳窗即時播放你電腦攝影機中的影像了。

從檔案播放影片

與從相機捕捉相同,只是用影片檔案名稱更改攝影機索引。

另外,在顯示影片時,可以透過 cv.waitKey() 來控制影片播放的速度。如果設定太小,則影片將非常快,相當於倍速播放;而如果太大,則影片將變得很慢,相當於延遲播放。正常情況下25毫秒就可以了。

import cv2 as cv
cap = cv.VideoCapture('video.mp4')
while cap.isOpened():
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
break
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
cap.release()
cv.destroyAllWindows()
登入後複製

運行這段程式碼,你就可以看到一個彈窗播放你選擇的影片檔案了。

保存視頻

從相機讀取視頻,我們可以將視頻保存到本地。我們捕捉一個視頻,一幀一幀地處理,如果我們想要保存這個視頻,非常簡單,只需使用 cv.VideoWriter()。

cv.VideoWriter() 有5個參數:

  • 參數1:輸出檔名,例如: output.mp4。
  • 參數2:FourCC 程式碼,FourCC 是用來指定視訊編解碼器的4位元組代碼。
  • 參數3:幀率的數量。
  • 參數4:幀大小。
  • 參數5:顏色標誌。如果為 True,正常顏色輸出,否則就是灰色影像輸出。

關於FourCC 與影片格式的對照關係,我列舉了一些常見的格式:

cv2.VideoWriter_fourcc('P','I','M','1 ') = MPEG-1 codec cv2.VideoWriter_fourcc('M','J','P','G') = motion-jpeg codec --> mp4v cv2.VideoWriter_fourcc('M', 'P', '4 ', '2') = MPEG-4.2 codec cv2.VideoWriter_fourcc('D', 'I', 'V', '3') = MPEG-4.3 codec cv2.VideoWriter_fourcc('D', 'I', 'V ', 'X') = MPEG-4 codec --> avi cv2.VideoWriter_fourcc('U', '2', '6', '3') = H263 codec cv2.VideoWriter_fourcc('I', '2', '6', '3') = H263I codec cv2.VideoWriter_fourcc('F', 'L', 'V', '1') = FLV1 codec

#儲存影片的代碼:

import cv2 as cv
cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'MJPG')
out = cv.VideoWriter('output.mp4', fourcc, 20.0, (640,480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
frame = cv.flip(frame, 1)
# 写翻转的框架
out.write(frame)
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()
登入後複製

運行這段程式碼,就可以在程式碼目錄下找到一個output.mp4 的影片檔了。

上面幾段程式碼中,如果想要退出影片動作,敲擊鍵盤的 q 就可以。

總結

以上就是今天要介紹的內容了,使用 python-opencv 來操作影片還是比較簡單的。當然,你也可以在讀取或儲存影片時對影片進行一些處理,這個我們後續再發文介紹。

以上是Python程式設計:使用相機捕捉、播放和保存視頻的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles