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

opencv(python)視頻按幀切片/cv2.VideoCapture()用法

這篇具有很好參考價值的文章主要介紹了opencv(python)視頻按幀切片/cv2.VideoCapture()用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、介紹

cv2.VideoCapture是OpenCV中一個用于捕捉視頻的類。它可以訪問計算機(jī)的攝像頭,或從視頻文件中讀取圖像。通過cv2.VideoCapture,用戶可以輕松地捕捉、保存、編輯和傳輸視頻流數(shù)據(jù)。

使用cv2.VideoCapture可以實現(xiàn)以下功能:

1. 打開計算機(jī)的攝像頭,實時捕捉攝像頭的視頻流數(shù)據(jù)。
2. 讀取視頻文件,逐幀解碼并輸出視頻流數(shù)據(jù)。
3. 控制幀率,調(diào)整視頻的播放速度。
4. 控制視頻的長寬和分辨率。
5. 編輯視頻流數(shù)據(jù),比如添加水印、合并視頻等操作。
6. 傳輸視頻數(shù)據(jù),可以通過網(wǎng)絡(luò)傳輸視頻流數(shù)據(jù)。

cv2.VideoCapture中最常用的方法有:

1. read():讀取視頻流數(shù)據(jù)中的一幀。
2. isOpened():檢查當(dāng)前的cv2.VideoCapture是否已經(jīng)打開。
3. release():釋放cv2.VideoCapture對象占用的資源。

例如以下代碼展示如何使用cv2.VideoCapture對象打開計算機(jī)的攝像頭并捕獲實時視頻:


import cv2

cap = cv2.VideoCapture(0) ?# 打開計算機(jī)的攝像頭

while True:
? ? ret, frame = cap.read() ?# 讀取視頻流數(shù)據(jù)中的一幀

? ? cv2.imshow('frame', frame) ?# 顯示捕獲的視頻流數(shù)據(jù)

? ? if cv2.waitKey(1) & 0xFF == ord('q'):
? ? ? ? break

cap.release() ?# 釋放占用的資源
cv2.destroyAllWindows()

二、cv2.VideoCapture()視頻的獲取操作

1、從文件讀取視頻

參數(shù)是視頻文件路徑,打開方式如下:

videoCapture = cv2.VideoCapture(“../test1.mp4”) #.avi等視頻文件

2、從攝像頭讀取視頻

?VideoCapture(0)中參數(shù)是0,表示打開筆記本的內(nèi)置攝像頭,如果有多個攝像頭,往上加就可。

videoCapture = cv2.VideoCapture(0)
如果要讀取監(jiān)控攝像頭的視頻流,需要知道指定攝像頭的ip等信息。
# 使用rtsp流打開相機(jī)
videoCapture = cv2.VideoCapture(f'rtsp://{username}:{password}@{ip}:{port}/h264/ch1/main/av_stream')

三、videoCapture.read()按幀讀內(nèi)容

# 讀幀
success, frame = videoCapture.read()
print(success)
print(frame)
success,frame是獲.read()方法的兩個返回值。?其中success是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣。

opencv(python)視頻按幀切片/cv2.VideoCapture()用法,opencv,python

下面這個示例中,我們使用了默認(rèn)攝像頭(設(shè)備編號為0)作為輸入,然后使用while循環(huán)逐幀讀取視頻并在窗口中顯示。如果按下 'q' 鍵或無法讀取視頻,則退出循環(huán)并釋放資源。

import cv2

# 創(chuàng)建 VideoCapture 對象
cap = cv2.VideoCapture(0)

# 循環(huán)讀取視頻流
while True:
    # 逐幀讀取視頻
    ret, frame = cap.read()

    # 如果不能讀取視頻,退出循環(huán)
    if not ret:
        break

    # 在窗口中顯示視頻幀
    cv2.imshow("frame", frame)

    # 檢測鍵盤輸入,按 'q' 鍵退出循環(huán)
    key = cv2.waitKey(1)
    if key == ord('q'):
        break

# 釋放資源并關(guān)閉窗口
cap.release()
cv2.destroyAllWindows()

什么是幀,幀的快慢是什么,影響什么
? ? ? ? 視頻的基本組成部分是幀(frame),即一系列靜態(tài)圖像,這些圖像在一定速率下以連續(xù)的方式播放,形成動態(tài)圖像,例如30幀/秒。視頻每秒的幀數(shù)被稱為幀率(Frame Rate),通常用“fps”(Frames Per Second)表示。例如,30fps表示視頻每秒鐘包含30幀圖像。幀率決定了視頻的流暢度和真實感。較高的幀率可以使視頻看起來更加流暢,因為它們可以更快地刷新圖像。例如,60fps的視頻比30fps的視頻看起來更加流暢。此外,較高的幀率還可以減少視頻中的模糊和顫動,因為它們可以更好地捕捉運動。但較高的幀率會導(dǎo)致文件變大和編解碼更復(fù)雜,因為需要處理更多的幀圖像。
————————————————
https://blog.csdn.net/cvxiayixiao/article/details/130519349文章來源地址http://www.zghlxwxcb.cn/news/detail-723020.html

四、實例

import os
import cv2


# 定義保存圖片函數(shù)
# image:要保存的圖片
# pic_address:圖片保存地址
# num: 圖片后綴名,用于區(qū)分圖片,int 類型
def save_image(image, address, num):
    pic_address = address + str(num) + '.jpg'
    cv2.imwrite(pic_address, image)


def video_to_pic(video_path, save_path, frame_rate):
    # 讀取視頻文件
    # video_path為視頻路徑,save_path為保存圖片路徑,frame_rate可以設(shè)置多少幀切一張圖

    global videoCap
    #這里將videoCapture加global意思是設(shè)置成了全局變量,后面釋放攝像頭要用到這個變量

    videoCap = cv2.VideoCapture(video_path)

    if videoCap.isOpened():
        print("攝像頭or視頻打開成功")
    if not videoCap.isOpened():
        print("找不到攝像頭or視頻")
        exit()

 
    # 讀幀
    success, frame = videoCap.read()
    """success,frame是獲.read()方法的兩個返回值。?
    其中success是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾,它的返回值就為False。
    frame就是每一幀的圖像,是個三維矩陣。"""
    # print(success)
    # print(frame)
    if videoCap.open(video_path):
        print("視頻提取成功")
    if not videoCap.open(video_path):
        print("can not open the video")

    j = 0
    i = 0
    while success:
        i = i + 1
        # 每隔固定幀保存一張圖片
        if i % frame_rate == 0:
            j = j + 1
            save_image(frame, save_path, j)
            print('圖片保存地址:', save_path + str(j) + '.jpg')
        success, frame = videoCap.read()
        # if cv2.waitKey(1) & 0xFF == ord('q'):
        #     break


if __name__ == '__main__':


    # 視頻文件和圖片保存地址
    SAMPLE_VIDEO = 'F:/Capture/dist/video/sc0914.mp4'
  
    SAVE_PATH = 'F:/Capture/dist/VideotoImages/sc0914/'
    #注意保存本地路徑不能有中文,save_image()以及imwrite、cv2.imread()均不支持有中文的路徑

    if not os.path.exists(SAVE_PATH):
        os.makedirs(SAVE_PATH)

    # 設(shè)置固定幀率
    FRAME_RATE = 10
    video_to_pic(SAMPLE_VIDEO, SAVE_PATH, FRAME_RATE)


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

到了這里,關(guān)于opencv(python)視頻按幀切片/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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • cv2.VideoCapture 及 ffmpeg 打開視頻流

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

    2024年02月12日
    瀏覽(17)
  • opencv視頻截取每一幀并保存為圖片python代碼CV2實現(xiàn)練習(xí)

    當(dāng)涉及到視頻處理時,Python中的OpenCV庫提供了強(qiáng)大的功能,可以方便地從視頻中截取每一幀并將其保存為圖片。這是一個很有趣的練習(xí),可以讓你更深入地了解圖像處理和多媒體操作。 使用OpenCV庫,你可以輕松地讀取視頻文件,并在循環(huán)中逐幀讀取視頻的每一幀。隨后,你可

    2024年02月12日
    瀏覽(31)
  • OpenCV中cv2的常見用法

    使用函數(shù)cv2.imread(filepath,flags)讀入一副圖片 filepath:要讀入圖片的完整路徑 flags:讀入圖片的標(biāo)志 cv2.IMREAD_COLOR:默認(rèn)參數(shù),讀入一副彩色圖片,忽略alpha通道 cv2.IMREAD_GRAYSCALE:讀入灰度圖片 cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道 使用函數(shù)cv2.imshow(wname,img)顯

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

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

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

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

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

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

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

    2024年02月16日
    瀏覽(30)
  • 【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印

    【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印

    在OpenCV中,調(diào)用cv2.putText()函數(shù)可添加文字到指定位置,對于需要在圖片中加入文字的場景提供了一種比較直接方便的方式。 注意:OpenCV 不支持顯示中文字符,使用 cv2.putText() 時添加的文本字符串不能包含中文字符(包括中文標(biāo)點符號) 其函數(shù)原型如下所示: 上述參數(shù)分別

    2024年02月04日
    瀏覽(88)
  • opencv 將多幀圖像合成為視頻 cv2.VideoWriter()

    將文件夾下有時間戳或者有序的 *.jpg 圖像合成為一個 mp4 格式的視頻。 附加:加進(jìn)度條看合成進(jìn)度。 以上示例合成視頻為 mp4 格式,如需合成其它視頻格式,可修改 cv2.VideoWriter_fourcc() 參數(shù)。請自行查詢相關(guān)參數(shù)。

    2024年02月11日
    瀏覽(24)
  • python中cv2.projectPoints的用法

    python中cv2.projectPoints的用法

    我們先看一下c++ 中的參數(shù)解釋 第一個輸入的點是一個, (N, 3) 維的 三維坐標(biāo)系中的點, xyz 第二個是旋轉(zhuǎn)向量, 第三個是平移向量. 第四個是相機(jī)內(nèi)參, 第五個是相機(jī)的畸變系數(shù), 如果輸入是4個時, 就是[k1, k2, p1, p2], 輸入5個時就是 [k1, k2, p1, p2, k3], 也可以是更多, [k1, k2, p1, p2, k3,

    2024年02月06日
    瀏覽(19)
  • Python中cv2.Canny() 函數(shù)用法詳解

    一、Canny算子邊緣檢測原理及步驟 cv2.Canny() 函數(shù)是 OpenCV 中的邊緣檢測函數(shù)之一,用于檢測圖像的邊緣。它的基本原理是通過計算圖像中每個像素點的梯度值來檢測邊緣。具體來說,它的實現(xiàn)步驟如下: 1、對輸入圖像進(jìn)行高斯濾波,以平滑圖像并去除噪聲; 2、計算圖像的梯

    2024年02月09日
    瀏覽(91)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包