前幾天有個讀者在粉絲群裡面提了一個問題:
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中文網其他相關文章!

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

Python在現實世界中的應用包括數據分析、Web開發、人工智能和自動化。 1)在數據分析中,Python使用Pandas和Matplotlib處理和可視化數據。 2)Web開發中,Django和Flask框架簡化了Web應用的創建。 3)人工智能領域,TensorFlow和PyTorch用於構建和訓練模型。 4)自動化方面,Python腳本可用於復製文件等任務。

Python在數據科學、Web開發和自動化腳本領域廣泛應用。 1)在數據科學中,Python通過NumPy、Pandas等庫簡化數據處理和分析。 2)在Web開發中,Django和Flask框架使開發者能快速構建應用。 3)在自動化腳本中,Python的簡潔性和標準庫使其成為理想選擇。

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。