国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python 從攝像頭獲取視頻/從文件獲取視頻 /保存視頻

netmou / 2219人閱讀

摘要:這次開始學(xué)習(xí)從攝像頭獲取視頻使用獲取視頻要獲取視頻,需要?jiǎng)?chuàng)建一個(gè)對(duì)象,參數(shù)可以是設(shè)備索引攝像頭索引或視頻文件的名稱。

這次開始學(xué)習(xí)Getting Started with Videos

1從攝像頭獲取視頻

使用cv2.VideoCapture()獲取視頻.

cv2.VideoCapture(builtins.object)

要獲取視頻,需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象,參數(shù)可以是設(shè)備索引(攝像頭索引)或視頻文件的名稱。如果是設(shè)備索引,當(dāng)只連接一臺(tái)攝像機(jī)時(shí),可以是0或-1;也可以通過(guò)傳遞1來(lái)選擇第二個(gè)攝像頭。

我們?cè)O(shè)cap = cv2.VideoCapture(0)

cap.open()

打開cap

cap.isOpened()

檢測(cè)cap是否初始化成功,如果返回True,則初始化成都,否則使用cap.open()打開cap

cap.read()
返回兩個(gè)值
首先返回一個(gè)bool值,如果能正確讀取幀,則為True,否則為False.可以通過(guò)檢查該返回值來(lái)檢查視頻的結(jié)尾.
再返回一個(gè)值,為每一幀的圖像,該值是一個(gè)三維矩陣

Note :如果使用一個(gè)變量接受兩個(gè)值,frame = cap.read() 則 frame 為一個(gè)元組,原來(lái)使用 frame 處需更改為 frame[1]

cap.get(propld)

通過(guò)cap.get(propld)訪問(wèn)視頻的某些功能,propld是0到18之間的數(shù)字。每個(gè)數(shù)字表示視頻的屬性。
比如:
cap.get(cv2.CAP_PROP_FRAME_WIDTH)和cap.get(cv2.CAP_PROP_FRAME_HEIGHT)得到幀寬和高度.
如果想修改為320x240.只需使用
ret = cap.set(cv2.CAP_PROP_FRAME_WIDTH,320)和
ret = cap.set(cv2.CAP_PROP_FRAME_HEIGHT,240).

參數(shù) propld 功能
cv2.CAP_PROP_POS_MSEC 0 視頻文件的當(dāng)前位置(以毫秒為單位)或視頻捕獲時(shí)間戳
cv2.CAP_PROP_POS_FRAMES 1 基于0的索引將被解碼/捕獲下一幀
cv2.CAP_PROP_POS_AVI_RATIO 2 視頻文件的相對(duì)位置:0 - 視頻的開始,1 - 視頻的結(jié)束
cv2.CAP_PROP_FRAME_WIDTH 3 幀的寬度
cv2.CAP_PROP_FRAME_HEIGHT 4 幀的高度
cv2.CAP_PROP_FPS 5 幀速
cv2.CAP_PROP_FOURCC 6 4個(gè)字符表示的視頻編碼器格式
cv2.CAP_PROP_FRAME_COUNT 7 幀數(shù)
cv2.CAP_PROP_FORMAT 8 byretrieve()返回的Mat對(duì)象的格式
cv2.CAP_PROP_MODE 9 指示當(dāng)前捕獲模式的后端特定值
cv2.CAP_PROP_BRIGHTNESS 10 圖像的亮度(僅適用于相機(jī))
cv2.CAP_PROP_CONTRAST 11 圖像對(duì)比度(僅適用于相機(jī))
cv2.CAP_PROP_SATURATION 12 圖像的飽和度(僅適用于相機(jī))
cv2.CAP_PROP_HUE 13 圖像的色相(僅適用于相機(jī))
cv2.CAP_PROP_GAIN 14 圖像的增益(僅適用于相機(jī))
cv2.CAP_PROP_EXPOSURE 15 曝光(僅適用于相機(jī))
cv2.CAP_PROP_CONVERT_RGB 16 表示圖像是否應(yīng)轉(zhuǎn)換為RGB的布爾標(biāo)志
cv2.CAP_PROP_WHITE_BALANCE 17
cv2.CAP_PROP_RECTIFICATION 18 立體攝像機(jī)的整流標(biāo)志
應(yīng)用

從攝像頭獲取視頻,并將其轉(zhuǎn)換為灰度視頻并顯示它.
代碼 :

</>復(fù)制代碼

  1. import numpy as np
  2. import cv2
  3. cap = cv2.VideoCapture(0)
  4. while(True):
  5. # Capture frame-by-frame
  6. ret, frame = cap.read()
  7. # Our operations on the frame come here
  8. gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  9. # Display the resulting frame
  10. cv2.imshow("frame",gray)
  11. if cv2.waitKey(1) & 0xFF == ord("q"):#若檢測(cè)到按鍵 ‘q’,退出
  12. break
  13. # When everything done, release the capture
  14. cap.release()#釋放攝像頭
  15. cv2.destroyAllWindows()#刪除全部窗口

Note :最后不要忘記release capture

1從文件獲取視頻

使用cv2.VideoCapture()獲取視頻.

cv2.VideoCapture(builtins.object)

與從攝像頭獲取視頻相同,只是參數(shù)為視頻文件的名稱.

應(yīng)用

代碼 :

</>復(fù)制代碼

  1. import numpy as np
  2. import cv2
  3. cap = cv2.VideoCapture("vtest.avi")
  4. while(cap.isOpened()):
  5. ret, frame = cap.read()
  6. gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  7. cv2.imshow("frame",gray)
  8. if cv2.waitKey(1) & 0xFF == ord("q"):
  9. break
  10. cap.release()
  11. cv2.destroyAllWindows()

Note :

應(yīng)為cv2.waitKey選擇恰當(dāng)?shù)臅r(shí)間,如果設(shè)置太小,視頻播放將非常快,如果設(shè)置太大,視頻將顯示慢動(dòng)作,一般設(shè)置25毫秒.

在使用Video Capture時(shí)應(yīng)確保安裝了正確版本的ffmpeggstreamer.

3保存視頻

使用cv2.VideoWriter()保存視頻.

cv2.VideoWriter()

首先創(chuàng)建一個(gè)VideoWriter對(duì)象并指定輸出文件名(例如:output.avi)。然后指定FourCC代碼。然后應(yīng)該傳遞每秒幀數(shù)(fps)和幀大小。最后一個(gè)是isColor標(biāo)志。如果是True,則編碼器需要彩色幀,否則它適用于灰度幀。

FourCC
用于指定視頻編解碼器的4字節(jié)代碼,可以在fourcc.org中找到可用代碼列表。它取決于平臺(tái).

?在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2.(XVID更為可取.MJPG會(huì)產(chǎn)生高大小的視頻.X264可以提供非常小的視頻)
?在Windows中:DIVX(更多要測(cè)試和添加)
?在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)

FourCC代碼通過(guò)cv2.VideoWriter_fourcc()傳遞
比如:
對(duì)于MJPG,F(xiàn)ourCC代碼作為cv2.VideoWriter_fourcc("M","J","P","G")cv2.VideoWriter_fourcc(*"MJPG")傳遞.

應(yīng)用

從攝像頭獲取視頻,在垂直方向上翻轉(zhuǎn)每一幀并保存它.
代碼 :

</>復(fù)制代碼

  1. import numpy as np
  2. import cv2
  3. cap = cv2.VideoCapture(0)
  4. # Define the codec and create VideoWriter object
  5. fourcc = cv2.VideoWriter_fourcc(*"XVID")
  6. out = cv2.VideoWriter("output.avi",fourcc, 20.0, (640,480))
  7. while(cap.isOpened()):
  8. ret, frame = cap.read()
  9. if ret==True:
  10. frame = cv2.flip(frame,0)
  11. # write the flipped frame
  12. out.write(frame)
  13. cv2.imshow("frame",frame)
  14. if cv2.waitKey(1) & 0xFF == ord("q"):
  15. break
  16. else:
  17. break
  18. # Release everything if job is finished
  19. cap.release()
  20. out.release()
  21. cv2.destroyAllWindows()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41970.html

相關(guān)文章

  • Python Opencv中基礎(chǔ)的知識(shí)點(diǎn)

      怎么從0到1學(xué)習(xí)Python呢?Python中的知識(shí)點(diǎn),涉及到內(nèi)容主要是Python Opencv,用于人工智能,機(jī)器學(xué)習(xí)模擬相關(guān)的數(shù)據(jù),那么,里面的一些較為基礎(chǔ)的知識(shí)點(diǎn),涉及到的內(nèi)容是什么呢?下面就給大家詳細(xì)解答下?! penCV是一個(gè)流行的開源計(jì)算機(jī)視覺(jué)庫(kù),可用于不同的編程語(yǔ)言,例如Python、C++和JavaScript。它提供了一套豐富的工具來(lái)處理和分析圖像和視頻,讓你可以從調(diào)整單...

    89542767 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<