目錄
讀取視頻
從相機讀取影片
從檔案播放影片
保存視頻
總結
首頁 後端開發 Python教學 如何使用Python捕捉、播放和保存攝影機影片?

如何使用Python捕捉、播放和保存攝影機影片?

Apr 26, 2023 pm 07:40 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)

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語法簡潔,適用於多領域,庫生態系統強大。

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

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

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

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

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

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 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles