Python imageio讀取視頻并進(jìn)行編解碼詳解
讀視頻和寫(xiě)視頻一直由于編解碼的問(wèn)題給程序員造成很多麻煩。對(duì)此進(jìn)行了一些探索。用Python讀取視頻有兩種主要方法,分別是基于imageio庫(kù)和OpenCV,其中OpenCV加上ffmpeg的安裝編譯很麻煩,推薦大家使用第一種方法,不過(guò)大家也可依據(jù)自己的需求進(jìn)行使用。
方法一:使用imageio庫(kù)
1. 一般imageio庫(kù)Anconda自帶的有,不用我們單獨(dú)安裝,沒(méi)有安裝的可用pip安裝或自己下載。
imageio使用方法可參考:http://imageio.readthedocs.io/en/latest/examples.html。
下面是一段使用imageio對(duì)視頻進(jìn)行灰度處理的測(cè)試代碼。
# 將彩色視頻轉(zhuǎn)為灰度視頻
import imageio
reader = imageio.get_reader('imageio:cockatoo.mp4')
fps = reader.get_meta_data()['fps']
writer = imageio.get_writer('~/cockatoo_gray.mp4', fps=fps)
for im in reader:
writer.append_data(im[:, :, 1])
writer.close()
2.一般你沒(méi)有按照f(shuō)fmpeg,直接運(yùn)行會(huì)提示如下所示的要安裝ffmpeg,使用conda安裝即可。另一個(gè)編解碼器包含比較全的編譯包是https://www.johnvansickle.com/ffmpeg/
imageio.core.fetching.NeedDownloadError: Need ffmpeg exe. You can obtain it with either: - install using conda: conda install ffmpeg -c conda-forge - download by calling: imageio.plugins.ffmpeg.download()
所以按照提示運(yùn)行如下命令安裝conda-forge編譯好的ffmpeg即可,conda-forge編譯的ffmpeg視頻編解碼庫(kù)都很齊全,可以直接對(duì)視頻讀存取。
conda install ffmpeg -c conda-forge
PS:小技巧,如果conda安裝國(guó)外軟件包速度很慢的話(huà),可以給conda添加清華大學(xué)的鏡像源,依次運(yùn)行下面幾條命令就可以了,安裝速度一般幾M/s.具體可參考https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes
方法二:使用OpenCV和ffmpeg
安裝較復(fù)雜,需編譯很多庫(kù),自己查找參考相關(guān)方法。
下面是使用OpenCV讀取視頻的方法:
import cv2
cap = cv2.VideoCapture('/path/to/your/video.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('image', frame)
k = cv2.waitKey(20)
#q鍵退出
if (k & 0xff == ord('q')):
break
cap.release()
cv2.destroyAllWindows()
以上這篇Python imageio讀取視頻并進(jìn)行編解碼詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python環(huán)境下安裝使用異步任務(wù)隊(duì)列包Celery的基礎(chǔ)教程
這篇文章主要介紹了Python環(huán)境下安裝使用異步任務(wù)隊(duì)列包Celery的基礎(chǔ)教程,Celery的分布式任務(wù)管理適合用于服務(wù)器集群的管理和維護(hù),需要的朋友可以參考下2016-05-05
python+Word2Vec實(shí)現(xiàn)中文聊天機(jī)器人的示例代碼
本文主要介紹了python+Word2Vec實(shí)現(xiàn)中文聊天機(jī)器人,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Django ORM外鍵查詢(xún)與反向查詢(xún)技巧
Django 的 ORM(對(duì)象關(guān)系映射)是其最強(qiáng)大的功能之一,它使得數(shù)據(jù)庫(kù)操作變得直觀和簡(jiǎn)潔,在復(fù)雜的數(shù)據(jù)庫(kù)結(jié)構(gòu)中,外鍵(Foreign Key)的使用及其對(duì)應(yīng)的反向查詢(xún)是 Django 開(kāi)發(fā)中不可或缺的部分,本文將詳細(xì)介紹如何在 Django 中利用外鍵進(jìn)行數(shù)據(jù)查詢(xún)以及執(zhí)行反向查詢(xún)2023-11-11
Python中itertools庫(kù)的四個(gè)函數(shù)介紹
這篇文章主要介紹了Python中itertools庫(kù)的四個(gè)函數(shù),主要討論itertools庫(kù)中的十分使用的幾個(gè)函數(shù),并重點(diǎn)介紹什么時(shí)候我們應(yīng)該考慮使用它們,需要的朋友可以參考一下2022-04-04
Python如何獲取免費(fèi)高匿代理IP及驗(yàn)證
這篇文章主要介紹了Python如何獲取免費(fèi)高匿代理IP及驗(yàn)證問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解
這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Python 專(zhuān)題二 條件語(yǔ)句和循環(huán)語(yǔ)句的基礎(chǔ)知識(shí)
本文主要介紹了Python條件語(yǔ)句和循環(huán)語(yǔ)句的基礎(chǔ)知識(shí)。主要內(nèi)容包括: 1.條件語(yǔ)句:包括單分支、雙分支和多分支語(yǔ)句,if-elif-else;2.循環(huán)語(yǔ)句:while的使用及簡(jiǎn)單網(wǎng)絡(luò)刷博器爬蟲(chóng);3.循環(huán)語(yǔ)句:for的使用及遍歷列表、元組、文件和字符串。2017-03-03
python 消除 futureWarning問(wèn)題的解決
今天小編就為大家分享一篇python 消除 futureWarning問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12

