国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

opencv進階09-視頻處理cv2.VideoCapture示例(打開本機電腦攝像頭)

這篇具有很好參考價值的文章主要介紹了opencv進階09-視頻處理cv2.VideoCapture示例(打開本機電腦攝像頭)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

視頻信號(以下簡稱為視頻)是非常重要的視覺信息來源,它是視覺處理過程中經(jīng)常要處理的一類信號。實際上,視頻是由一系列圖像構(gòu)成的,這一系列圖像被稱為幀,幀是以固定的時間間隔從視頻中獲取的。獲?。úシ牛乃俣确Q為幀速率,其單位通常使用“幀/秒”表示,代表在1 秒內(nèi)所出現(xiàn)的幀數(shù),對應(yīng)的英文是 FPS(Frames Per Second)。如果從視頻中提取出獨立的幀,就可以使用圖像處理的方法對其進行處理,達到處理視頻的目的。

OpenCV 提供了 cv2.VideoCapture 類和 cv2.VideoWriter 類來支持各種類型的視頻文件。在不同的操作系統(tǒng)中,它們支持的文件類型可能有所不同,但是在各種操作系統(tǒng)中均支持 AVI格式的視頻文件。

VideoCapture 類

OpenCV 提供了 cv2.VideoCapture 類來處理視頻。cv2.VideoCapture 類處理視頻的方式非常簡單、快捷,而且它既能處理視頻文件又能處理攝像頭信息。

類函數(shù)介紹

cv2.VideoCapture 類的常用函數(shù)包括初始化、打開、幀捕獲、釋放、屬性設(shè)置等,下面對
這些函數(shù)進行簡單的介紹。

1. 初始化
OpenCV 為 cv2.VideoCapture 類提供了構(gòu)造函數(shù) cv2.VideoCapture(),用于打開攝像頭并完成攝像頭的初始化工作。該函數(shù)的語法格式為:

捕獲對象=cv2.VideoCapture(“攝像頭 ID 號”)

式中:

  • “攝像頭 ID 號”就是攝像頭的 ID 號碼。需要注意的是,這個參數(shù)是攝像設(shè)備(攝像頭)的 ID 編號,而不是文件名。其默認值為-1,表示隨機選取一個攝像頭;如果有多個攝像頭,則用數(shù)字“0”表示第 1 個攝像頭,用數(shù)字“1”表示第 2 個攝像頭,以此類推。
    所以,如果只有一個攝像頭,既可以使用“0”,也可以使用“-1”作為攝像頭 ID 號。在某些平臺上,如果該參數(shù)值為“-1”,OpenCV 會彈出一個窗口,讓用戶手動選擇希望使用的攝像頭。

  • “捕獲對象”為返回值,是 cv2.VideoCapture 類的對象。
    例如,要初始化當(dāng)前的攝像頭,可以使用語句:

cap = cv2.VideoCapture(0)

OpenCV 官網(wǎng)在介紹函數(shù) cv2.VideoCapture()時,特別強調(diào):視頻處理完以后,要記得釋放攝像頭對象。
該(構(gòu)造)函數(shù)也能夠用于初始化視頻文件,初始化視頻文件時,參數(shù)為文件名。此時函數(shù)的形式為:

捕獲對象=cv2.VideoCapture(“文件名”)

例如,打開當(dāng)前目錄下文件名為“vtest.avi”的視頻文件,可以使用語句:

cap = cv2.VideoCapture('vtest.avi')
  1. cv2.VideoCapture.open()函數(shù)和cv2.VideoCapture.isOpened()函數(shù)

一般情況下,使用 cv2.VideoCapture()函數(shù)即可完成攝像頭的初始化。有時,為了防止初始化發(fā)生錯誤,可以使用函數(shù) cv2.VideoCapture.isOpened()來檢查初始化是否成功。該函數(shù)的語法格式為:

retval = cv2.VideoCapture.isOpened()

該函數(shù)會判斷當(dāng)前的攝像頭是否初始化成功:

  • 如果成功,則返回值 retval 為 True。
  • 如果不成功,則返回值 retval 為 False。

如果攝像頭初始化失敗,可以使用函數(shù) cv2.VideoCapture.open()打開攝像頭。該函數(shù)的語法格式為:

retval = cv2.VideoCapture.open( index )

式中:

  • index 為攝像頭 ID 號。
  • retval 為返回值,當(dāng)攝像頭(或者視頻文件)被成功打開時,返回值為 True。

同樣,函數(shù) cv2.VideoCapture.isOpened()和函數(shù) cv2.VideoCapture.open()也能用于處理視頻文件。在處理視頻文件時,函數(shù) cv2.VideoCapture.open()的參數(shù)為文件名,其語法格式為:

retval = cv2.VideoCapture.open( filename )

3. 捕獲幀

攝像頭初始化成功后,就可以從攝像頭中捕獲幀信息了。捕獲幀所使用的是函數(shù)cv2.VideoCapture.read()。該函數(shù)的語法是:

retval, image=cv2.VideoCapture.read()

式中:

  • image 是返回的捕獲到的幀,如果沒有幀被捕獲,則該值為空。
  • retval 表示捕獲是否成功,如果成功則該值為 True,不成功則為 False。

4. 釋放
在不需要攝像頭時,要關(guān)閉攝像頭。關(guān)閉攝像頭使用的是函數(shù)

cv2.VideoCapture.release()。

該函數(shù)的語法是:

None=cv2.VideoCapture.release()

例如,當(dāng)前有一個 VideoCapture 類的對象 cap,要將其釋放,可以使用語句:

cap.release()

5 屬性設(shè)置
有時,我們需要獲取 cv2.VideoCapture 類對象的屬性,或是更改該類對象的屬性。函數(shù)cv2.VideoCapture.get()用于獲取 cv2.VideoCapture 類對象的屬性,該函數(shù)的語法格式是:

retval = cv2.VideoCapture.get( propId )

式中,參數(shù) propId 對應(yīng)著 cv2.VideoCapture 類對象的屬性。
例如,有一個 cv2.VideoCapture 類對象 cvc,則:

  • 通過 cvc.get(cv2.CAP_PROP_FRAME_WIDTH),就能獲取當(dāng)前幀對象的寬度。
  • 通過 cvc.get(cv2.CAP_PROP_FRAME_HEIGHT),就能獲取當(dāng)前幀對象的高度。

函數(shù) cv2.VideoCapture.set()用來設(shè)置 cv2.VideoCapture 類對象的屬性。該函數(shù)的語法是:

retval = cv2.VideoCapture.set( propId, value )

式中,propId 對應(yīng) cv2.VideoCapture 類對象的屬性,value 對應(yīng)屬性 propid 的值。
例如,有一個 cv2.VideoCapture 類對象 cvc,則:

  • 語句 ret = cvc.set(cv2.CAP_PROP_FRAME_WIDTH, 640)將當(dāng)前幀對象的寬度設(shè)置為
    640 像素。
  • 語句 ret = cvc.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)將當(dāng)前幀對象的高度設(shè)置為480 像素。

cv2.VideoCapture 類對象的屬性值及含義如表 18-1 所示。

opencv進階09-視頻處理cv2.VideoCapture示例(打開本機電腦攝像頭),opencv,音視頻,電腦,人工智能,計算機視覺,python
opencv進階09-視頻處理cv2.VideoCapture示例(打開本機電腦攝像頭),opencv,音視頻,電腦,人工智能,計算機視覺,python

5. cv2.VideoCapture.grab()函數(shù)cv2.VideoCapture.retrieve()函數(shù)

一般情況下,如果需要讀取一個攝像頭的視頻數(shù)據(jù),最簡便的方法就是使用函數(shù)
cv2.VideoCapture.read()。但是,如果需要同步一組或一個多頭(multihead)攝像頭(例如立體攝像頭或 Kinect)的視頻數(shù)據(jù)時,該函數(shù)就無法勝任了。可以把函數(shù) cv2.VideoCapture.read()
理解為是由函數(shù) cv2.VideoCapture.grab()和函數(shù) cv2.VideoCapture.retrieve()組成的。函數(shù)
cv2.VideoCapture.grab()用來指向下一幀,函數(shù) cv2.VideoCapture.retrieve()用來解碼并返回一幀。

因此,可以使用函數(shù) cv2.VideoCapture.grab()和函數(shù)cv2.VideoCapture.retrieve()獲取多個攝像頭的數(shù)據(jù)。

函數(shù) cv2.VideoCapture.grab()用來指向下一幀,其語法格式是:

retval= cv2.VideoCapture.grab( )

如果該函數(shù)成功指向下一幀,則返回值 retval 為 True。
函數(shù) cv2.VideoCapture.retrieve()用來解碼,并返回函數(shù) v2.VideoCapture.grab()捕獲的視頻幀。

該函數(shù)的語法格式為:

retval, image = cv2.VideoCapture.retrieve( )

式中:

  • image 為返回的視頻幀,如果未成功,則返回一個空圖像。
  • retval 為布爾型值,若未成功,返回 False;否則,返回 True。

對于一組攝像頭,可以使用如下代碼捕獲不同攝像頭的視頻幀:

success0 = cameraCapture0.grab()
success1 = cameraCapture1.grab()
if success0 and success1:
frame0 = cameraCapture0.retrieve()
frame1 = cameraCapture1.retrieve()
與 VideoCapture 類內(nèi)的其他函數(shù)一樣,cv2.VideoCapture.grab()和 cv2.VideoCapture.retrieve()

也能用來讀取視頻文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-654423.html

示例:顯示帥哥或美女視頻

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
 ret, frame = cap.read()
 cv2.imshow('frame',frame)
 c = cv2.waitKey(1)
 if c==27: #ESC 鍵
    break
cap.release()
cv2.destroyAllWindows()

到了這里,關(guān)于opencv進階09-視頻處理cv2.VideoCapture示例(打開本機電腦攝像頭)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • opencv 進階10-人臉識別原理說明及示例-cv2.CascadeClassifier.detectMultiScale()

    opencv 進階10-人臉識別原理說明及示例-cv2.CascadeClassifier.detectMultiScale()

    人臉識別是指程序?qū)斎氲娜四槇D像進行判斷,并識別出其對應(yīng)的人的過程。人臉識別程 序像我們?nèi)祟愐粯?,“看到”一張人臉后就能夠分辨出這個人是家人、朋友還是明星。 當(dāng)然,要實現(xiàn)人臉識別,首先要判斷當(dāng)前圖像內(nèi)是否出現(xiàn)了人臉,也即人臉檢測。只有檢 測到圖像

    2024年02月09日
    瀏覽(91)
  • opencv進階08-K 均值聚類cv2.kmeans()介紹及示例

    opencv進階08-K 均值聚類cv2.kmeans()介紹及示例

    K均值聚類是一種常用的無監(jiān)督學(xué)習(xí)算法,用于將一組數(shù)據(jù)點分成不同的簇(clusters),以便數(shù)據(jù)點在同一簇內(nèi)更相似,而不同簇之間差異較大。K均值聚類的目標(biāo)是通過最小化數(shù)據(jù)點與所屬簇中心之間的距離來形成簇。 當(dāng)我們要預(yù)測的是一個離散值時,做的工作就是“分類”

    2024年02月12日
    瀏覽(91)
  • Python-OpenCv中的cv2.VideoCapture()類

    cv2.VideoCapture()具有兩個功能,一是可以完成攝像頭的初始化,打開攝像頭;二是可以完成視頻文件的初始化。 參數(shù)說明: ? ? ? ? capture :要打開的攝像頭 ? ? ? ? index :攝像頭的設(shè)備索引,對于筆記本電腦來說,為0時,一般打開的是電腦的內(nèi)置攝像頭,為1時,打開的為外

    2024年01月25日
    瀏覽(24)
  • cv2.VideoCapture 及 ffmpeg 打開視頻流

    安裝ffmpeg:?windows電腦FFmpeg安裝教程手把手詳解 ? 安裝ffmpeg 運行ffmpeg:

    2024年02月12日
    瀏覽(17)
  • opencv進階07-支持向量機cv2.ml.SVM_create()簡介及示例

    opencv進階07-支持向量機cv2.ml.SVM_create()簡介及示例

    支持向量機(Support Vector Machine,SVM)是一種二分類模型,目標(biāo)是尋找一個標(biāo)準(zhǔn)(稱為超平面)對樣本數(shù)據(jù)進行分割,分割的原則是確保分類最優(yōu)化(類別之間的間隔最大)。當(dāng)數(shù)據(jù)集較小時,使用支持向量機進行分類非常有效。支持向量機是最好的現(xiàn)成分類器之一,這里所謂

    2024年02月12日
    瀏覽(90)
  • cv2.videocapture.read()參數(shù)

    cv2.videocapture.read()是OpenCV庫中讀取視頻文件的函數(shù),其參數(shù)為一個可選的參數(shù),用于指定讀取視頻文件時的參數(shù)。該參數(shù)是一個整數(shù)類型的值,可以為以下值之一: 0: 默認參數(shù),表示從第一個可用的攝像頭中讀取視頻流。 1: 表示從第二個可用的攝像頭中讀取視頻流。 字符串

    2024年02月16日
    瀏覽(26)
  • OpenCV讀取視頻失?。紵o可用信息,未為 opencv_world453.dll 加載任何符號> cv::VideoCapture

    OpenCV讀取視頻失?。紵o可用信息,未為 opencv_world453.dll 加載任何符號> cv::VideoCapture

    OpenCV讀取視頻失?。紵o可用信息,未為 opencv_world453.dll 加載任何符號> cv::VideoCapture 出現(xiàn)這種情況基本是因為: VideoCapture 讀取視頻路徑錯誤。 比如:在這里我電腦不知道為什么默認攝像頭是1不是0,所以視頻讀取錯誤,我改為 VideoCapture cap(1)就對了。 同理,如果調(diào)用的不是

    2024年01月23日
    瀏覽(18)
  • cv2.VideoCapture拉取rtsp流超時問題

    在python中,使用cv2拉去rtsp視頻流時,如果rtsp流異常,不管是cv2.VideoCapture()或者VideoCapture().read()都可能長時間阻塞(很多人說默認超時30s),而且找不到設(shè)置超時設(shè)定的地方,嘗試過使用線程處理,但實際使用比較瑪法麻煩,在stackoverflow.找到解決方法:

    2024年02月16日
    瀏覽(30)
  • 【Python】進階學(xué)習(xí):OpenCV--一文詳解cv2.namedWindow()

    【Python】進階學(xué)習(xí):OpenCV--一文詳解cv2.namedWindow()

    【Python】進階學(xué)習(xí):OpenCV–一文詳解cv2.namedWindow() ?? 個人主頁:高斯小哥 ?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、

    2024年03月20日
    瀏覽(643)
  • opencv基礎(chǔ)48-繪制圖像輪廓并切割示例-cv2.drawContours()

    opencv基礎(chǔ)48-繪制圖像輪廓并切割示例-cv2.drawContours()

    在 OpenCV 中,可以使用函數(shù) cv2.drawContours()繪制圖像輪廓。該函數(shù)的語法格式是: image=cv2.drawContours( image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]] ) 其中,函數(shù)的返回值為 image,表示目標(biāo)圖像,即繪制了邊緣的原始圖像。 該函數(shù)有如下參數(shù): image:待

    2024年02月13日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包