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單元測(cè)試框架unittest基本用法案例
unittest庫(kù)unittest庫(kù)是python的內(nèi)置庫(kù),用來(lái)對(duì)程序進(jìn)行測(cè)試,下面這篇文章主要給大家介紹了關(guān)于python中單元測(cè)試框架unittest基本用法的相關(guān)資料,需要的朋友可以參考下2022-09-09
Python??Flask框架操作數(shù)據(jù)庫(kù)的方法
Flask中最方便用的數(shù)據(jù)庫(kù)框架是flask_sqlalchamy,是對(duì)?SQLAlchamy?在?Flask?中的擴(kuò)展,它主要在于簡(jiǎn)化Flask?中?sqlalchamy的使用,本篇文章給大家介紹Python??Flask的數(shù)據(jù)庫(kù)操作使用方法,感興趣的朋友一起看看吧2024-02-02
詳解Python連接MySQL數(shù)據(jù)庫(kù)的多種方式
這篇文章主要介紹了Python連接MySQL數(shù)據(jù)庫(kù)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Springboo如何t動(dòng)態(tài)修改配置文件屬性
這篇文章主要介紹了Springboo如何t動(dòng)態(tài)修改配置文件屬性問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python裝飾器使用實(shí)例:驗(yàn)證參數(shù)合法性
這篇文章主要介紹了Python裝飾器使用實(shí)例:驗(yàn)證參數(shù)合法性,本文直接給出代碼實(shí)例,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06
Pandas之drop_duplicates:去除重復(fù)項(xiàng)方法
下面小編就為大家分享一篇Pandas之drop_duplicates:去除重復(fù)項(xiàng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python爬取天氣數(shù)據(jù)的實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于python爬取天氣數(shù)據(jù)的實(shí)例詳解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2020-11-11
python區(qū)塊及區(qū)塊鏈的開(kāi)發(fā)詳解
這篇文章主要介紹了python區(qū)塊及區(qū)塊鏈的開(kāi)發(fā)詳解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

