日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python如何处理视频_OpenCV-Python系列之视频处理入门

發(fā)布時(shí)間:2024/7/19 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python如何处理视频_OpenCV-Python系列之视频处理入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

視頻處理在OpenCV中處于極為重要的地位,目標(biāo)實(shí)時(shí)跟蹤等各種實(shí)時(shí)圖像處理算法都是以視頻為基礎(chǔ)。

從相機(jī)捕獲視頻

首先我們來(lái)了解一下使用電腦自帶的相機(jī)來(lái)進(jìn)行捕獲視頻。通常,我們必須使用攝像機(jī)捕獲實(shí)時(shí)流。OpenCV提供了一個(gè)非常簡(jiǎn)單的界面來(lái)執(zhí)行此操作。讓我們從相機(jī)捕獲視頻(我使用筆記本電腦上的內(nèi)置網(wǎng)絡(luò)攝像頭),我們需要了解幾個(gè)函數(shù):

cap = cv2.VideoCapture(0)

VideoCapture()中參數(shù)是0,表示打開(kāi)筆記本的內(nèi)置攝像頭,參數(shù)是視頻文件路徑則打開(kāi)視頻,如cap = cv2.VideoCapture("../test.avi"),當(dāng)然了,如果你外接的有其他的攝像頭,那就可以選用其他的參數(shù)例如1從而調(diào)用它。

ret,frame = cap.read()

cap.read()按幀讀取視頻,ret,frame是獲cap.read()方法的兩個(gè)返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾,它的返回值就為False。frame就是每一幀的圖像,是個(gè)三維矩陣,我們都知道視頻是由一幀一幀的圖像連續(xù)組成的,OpenCV在對(duì)圖像處理時(shí)就是對(duì)每一幀的圖像進(jìn)行快速處理。

cv2.waitkey()

waitKey()方法本身表示等待鍵盤輸入,參數(shù)是1,表示延時(shí)1ms切換到下一幀圖像,對(duì)于視頻而言;參數(shù)為0,如cv2.waitKey(0)只顯示當(dāng)前幀圖像,相當(dāng)于視頻暫停,;參數(shù)過(guò)大如cv2.waitKey(1000),會(huì)因?yàn)檠訒r(shí)過(guò)久而卡頓感覺(jué)到卡頓。

c得到的是鍵盤輸入的ASCII碼,esc鍵對(duì)應(yīng)的ASCII碼是27,即當(dāng)按esc鍵是if條件句成立。

release()

調(diào)用release()釋放攝像頭,調(diào)用destroyAllWindows()關(guān)閉所有圖像窗口。

現(xiàn)在我們首先進(jìn)行代碼實(shí)驗(yàn),之后會(huì)進(jìn)行一些說(shuō)明:import?numpy?as?np

import?cv2?as?cv

cap?=?cv.VideoCapture(0)

if?not?cap.isOpened():

print("Cannot?open?camera")

exit()

while?True:

#?Capture?frame-by-frame

ret,?frame?=?cap.read()

#?if?frame?is?read?correctly?ret?is?True

if?not?ret:

print("Can't?receive?frame?(stream?end?).?Exiting?...")

break

#?Our?operations?on?the?frame?come?here

#?gray?=?cv.cvtColor(frame,?cv.COLOR_BGR2GRAY)

#?Display?the?resulting?frame

cv.imshow('frame',?gray)

if?cv.waitKey(1)?==?ord('q'):

break

#?When?everything?done,?release?the?capture

cap.release()

cv.destroyAllWindows()

isOpened可以確定攝像頭是否被打開(kāi),如果打開(kāi)則繼續(xù),如果未成功打開(kāi)則自動(dòng)退出。前面的時(shí)候我們已經(jīng)講過(guò),frame所指代的,就是攝像頭視頻的每一幀圖像,所以在顯示時(shí),我們也是顯示每一幀。如果對(duì)每一幀圖像都進(jìn)行灰度化處理,那么所顯示的視頻就是灰度化視頻,當(dāng)然,關(guān)于灰度化現(xiàn)在還沒(méi)有講到,但是可以先做個(gè)小實(shí)驗(yàn),我們來(lái)看代碼:import?numpy?as?np

import?cv2?as?cv

cap?=?cv.VideoCapture(0)

if?not?cap.isOpened():

print("Cannot?open?camera")

exit()

while?True:

#?Capture?frame-by-frame

ret,?frame?=?cap.read()

#?if?frame?is?read?correctly?ret?is?True

if?not?ret:

print("Can't?receive?frame?(stream?end?).?Exiting?...")

break

#?Our?operations?on?the?frame?come?here

gray?=?cv.cvtColor(frame,?cv.COLOR_BGR2GRAY)

#?Display?the?resulting?frame

cv.imshow('frame',?gray)

if?cv.waitKey(1)?==?ord('q'):

break

#?When?everything?done,?release?the?capture

cap.release()

cv.destroyAllWindows()

大家自己實(shí)驗(yàn),體驗(yàn)一下效果。或許有的人已經(jīng)發(fā)現(xiàn)了,我們的視頻跟實(shí)際中好像是相反的,屬于鏡像效果,我們可以取消這種效果,在這里需要介紹一個(gè)函數(shù),后面在圖像增強(qiáng)部分也會(huì)介紹到:

cv2.flip?()

函數(shù)原型:flip(src, flipCode[, dst])

src代表輸入的圖像,我么你來(lái)看一下flipCode的參數(shù)表:

現(xiàn)在我們加入這行代碼:import?numpy?as?np

import?cv2?as?cv

cap?=?cv.VideoCapture(0)

if?not?cap.isOpened():

print("Cannot?open?camera")

exit()

while?True:

#?Capture?frame-by-frame

ret,?frame?=?cap.read()

frame?=?cv.flip(frame,?1)

#?if?frame?is?read?correctly?ret?is?True

if?not?ret:

print("Can't?receive?frame?(stream?end?).?Exiting?...")

break

#?Our?operations?on?the?frame?come?here

gray?=?cv.cvtColor(frame,?cv.COLOR_BGR2GRAY)

#?Display?the?resulting?frame

cv.imshow('frame',?gray)

if?cv.waitKey(1)?==?ord('q'):

break

#?When?everything?done,?release?the?capture

cap.release()

cv.destroyAllWindows()

再實(shí)驗(yàn)會(huì)發(fā)現(xiàn)圖像已經(jīng)沒(méi)有那種鏡像效果了。

從文件播放視頻

從文件播放視頻與從攝像機(jī)捕獲視頻相同,只是將攝像機(jī)索引更改為視頻文件名。另外,在顯示框架時(shí),請(qǐng)使用適當(dāng)?shù)臅r(shí)間cv.waitKey()。如果太少,則視頻將非常快,而如果太高,則視頻將變得很慢(嗯,這就是顯示慢動(dòng)作的方式)。正常情況下25毫秒就可以了。

給出實(shí)例代碼:import?cv2?as?cv

cap?=?cv.VideoCapture('test.avi')

while?cap.isOpened():

ret,?frame?=?cap.read()

#?if?frame?is?read?correctly?ret?is?True

if?not?ret:

print("Can't?receive?frame?(stream?end?).?Exiting?...")

break

cv.imshow('frame',?frame)

if?cv.waitKey(25)?==?ord('q'):

break

cap.release()

cv.destroyAllWindows()

保存視頻

當(dāng)我們想要保存圖像的時(shí)候,,這非常簡(jiǎn)單:只需使用cv2.imwrite()。而當(dāng)我們想要保存視頻的時(shí)候,需要做更多的工作。

這次我們創(chuàng)建一個(gè)VideoWriter對(duì)象。我們應(yīng)該指定輸出文件名(例如:output.avi)。然后,我們應(yīng)指定FourCC代碼(下一段中的詳細(xì)信息)。然后應(yīng)傳遞每秒的幀數(shù)(fps)和幀大小。最后一個(gè)是isColor標(biāo)志。如果為True,則編碼器需要彩色框,否則將與灰度框一起使用。

FourCC是一個(gè)4字節(jié)的代碼,用于指定視頻編碼器以及****。可用代碼列表可在fourcc.org中找到,它取決于平臺(tái)。在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。(最好使用XVID。MJPG可以生成大尺寸的視頻。X264提供非常小的尺寸的視頻)

在Windows中:DIVX(尚待測(cè)試和添加)

在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。

FourCC代碼作為MJPG的`cv.VideoWriter_fourcc('M','J','P','G')or cv.VideoWriter_fourcc(*'MJPG')`傳遞。

以下代碼從攝像機(jī)捕獲,在垂直方向上翻轉(zhuǎn)每一幀,然后保存視頻:import?numpy?as?np

import?cv2?as?cv

cap?=?cv.VideoCapture(0)

#?Define?the?codec?and?create?VideoWriter?object

fourcc?=?cv.VideoWriter_fourcc(*'XVID')

out?=?cv.VideoWriter('output.avi',?fourcc,?20.0,?(640,??480))

while?cap.isOpened():

ret,?frame?=?cap.read()

if?not?ret:

print("Can't?receive?frame?(stream?end?).?Exiting?...")

break

frame?=?cv.flip(frame,?1)

#?write?the?flipped?frame

out.write(frame)

cv.imshow('frame',?frame)

if?cv.waitKey(1)?==?ord('q'):

break

#?Release?everything?if?job?is?finished

cap.release()

out.release()

cv.destroyAllWindows()

大家可以自己嘗試演示效果。

視頻處理的部分基本上就結(jié)束了,以上介紹到的將是以后學(xué)習(xí)中非常重要的基礎(chǔ)。而事實(shí)上,OpenCV中對(duì)于視頻的處理也有更多的操作,現(xiàn)在介紹最后一個(gè)函數(shù):

VideoCapture.get()

由于前面我們已經(jīng)指定cap = cv.VideoCapture(0),所以調(diào)用此函數(shù)只需用cap.get(),get中將傳入?yún)?shù),給出參數(shù)表:

共有18個(gè)參數(shù),而至于相關(guān)的代碼,請(qǐng)大家自己實(shí)驗(yàn),可以使用print函數(shù)輸出視頻的詳細(xì)信息。

總結(jié)

以上是生活随笔為你收集整理的python如何处理视频_OpenCV-Python系列之视频处理入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 乳色吐息免费看 | 亚洲 美腿 欧美 偷拍 | 99ri在线观看 | 欧美日韩大陆 | 国产精品日本一区二区在线播放 | eeuss国产一区二区三区黑人 | 亚洲精视频 | 女人扒开屁股让男人桶 | av中文在线观看 | 日本黄色三级网站 | 国产一区二区三区91 | 国产免费麻豆 | 四色最新网址 | 久久精品香蕉视频 | 亚洲精品日韩综合观看成人91 | 久久中文字幕一区 | 黄色永久网站 | 国产精品传媒一区二区 | 亚洲国产精品国自产拍av | 少妇又色又爽又黄的视频 | 波多野结衣一区二区三区 | 偷拍女澡堂一区二区三区 | av色片| 欧美高大丰满少妇xxxx | av免费毛片| 天天做天天爽 | 热热色原网址 | 国产视频综合在线 | 久久影院一区二区 | 亚洲日本三级 | 91亚瑟视频 | 影音先锋美女 | 九九精品免费视频 | 久久综合亚洲色hezyo国产 | 精品久久久中文字幕人妻 | 男女免费网站 | 寡妇av| 国产精品成熟老女人 | 亚洲自拍p| 日韩欧美电影一区二区三区 | 欧美久久久久久久久久久 | 天天夜碰日日摸日日澡性色av | 又爽av| 性色一区 | 亚洲 欧美 激情 另类 校园 | 国产日韩综合 | 自拍偷在线精品自拍偷无码专区 | 天天干b | 俄罗斯av在线 | 色眯眯视频| 成人免费在线播放视频 | 午夜视频www| 久久成人小视频 | 本道久久 | 人妻少妇精品中文字幕av蜜桃 | 久久成人国产精品入口 | 爱爱网视频| 欧美午夜精品久久久久久人妖 | 国产一区二区三区四区五区六区 | 亚洲视频精品一区 | 中文无码熟妇人妻av在线 | 欧美影院久久 | 91吃瓜在线 | 欧美亚洲综合另类 | a资源在线| 好吊色一区二区三区 | 日韩午夜在线 | 91精品国产乱码在线观看 | 欧美成人精品一区二区三区在线看 | 99在线精品视频免费观看软件 | 久久99亚洲精品 | 毛片在线视频 | 女女av在线| 玖玖爱这里只有精品 | 久久久久久久久亚洲 | 精品久久免费观看 | 你懂的亚洲| 爱如潮水3免费观看日本高清 | 高清中文字幕av | 日韩欧美国产片 | 日韩阿v | 久久精品9 | n0659极腔濑亚美莉在线播放播放 | 精品一区二区三区在线播放 | 亚洲精品国产精品国自产观看浪潮 | 最新福利视频 | 精品动漫一区二区三区 | 国产自产21区 | 极品美女开粉嫩精品 | 91插视频 | 粉嫩一区 | www.奇米.com | 四虎影库永久在线 | 在线高清观看免费 | 成人av日韩 | 青娱乐福利视频 | 最污网站在线观看 | 国产成人精品影院 | www.97ai.com|