<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前幾天有個讀者在粉絲群裡面提了一個問題:
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個引數:
關於 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實現捕獲,播放和儲存攝像頭視訊的文章就介紹到這了,更多相關Python攝像頭視訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45