91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

opencv如何讀取視頻并保存圖像

發布時間:2021-06-04 14:50:23 來源:億速云 閱讀:203 作者:小新 欄目:開發技術

這篇文章主要介紹了opencv如何讀取視頻并保存圖像,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

問題重述

實習項目要做安全帽目標檢測,拿到了公司給的一些視頻數據,使用Opencv讀取視頻并每隔 1 s 1s 1s存儲一副圖像,下面是一些視頻數據

opencv如何讀取視頻并保存圖像

實現步驟 添加依賴庫

import cv2
import os

定義視頻路徑和圖像存儲路徑

video_path = './未戴安全帽視頻01/'
image_path = './images/'

讀取視頻文件

video_files = [i for i in os.listdir(video_path) if i.split('.')[-1] in ['mp4']]
len(video_files)

獲取視頻幀

# video_file:'./未戴安全帽視頻01/中建四局-東圍墻5_001_2021-03-22-18-04-28_2021-03-22-18-04-33.mp4', 
# pic_dir:'中建四局-東圍墻5_001_2021-03-22-18-04-28_2021-03-22-18-04-33'
def get_image(video_file, pic_dir):
    if not os.path.exists(pic_dir):
        os.makedirs(pic_dir)
    
    # cv2讀取視頻文件
    vc = cv2.VideoCapture(video_file)
    index = 0
    # 判斷載入的視頻是否可以打開
    rval = vc.isOpened()
    while rval:  # 循環讀取視頻幀
        index = index + 1
        
        rval, frame = vc.read()
        # 每十幀保存一張圖片
        if index * 10 % 1 == 0:
            if rval:
                # cv2.imshow("capture", frame)
                save_file = pic_dir + str(index).zfill(5) + '.png'
                cv2.imwrite(save_file, frame)  # 存儲為圖像,保存名為文件夾名
                cv2.waitKey(1)
            else:
                break
        vc.release()
    print("已保存%d" %(index - 1) + "張圖片")
        
# video_file = './未戴安全帽視頻01/01.mp4'
# pic_path = '01/'
# get_image(video_file, image_path + pic_path)

遍歷視頻文件

for file in video_files:
    video_file = video_path + file
    pic_path = image_path + file.replace('.mp4', '/')
    get_image(video_file, pic_path)

已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片

完整代碼

import cv2
import os


def save_img():
    video_path = r'F:\test\3.10'
    videos = os.listdir(video_path)
    for video_name in videos:
        file_name = video_name.split('.')[0]
        folder_name = video_path +'_'+ file_name
        os.makedirs(folder_name, exist_ok=True)
        print(video_path + '/' + video_name)
        vc = cv2.VideoCapture(video_path + '/' + video_name)
        # 讀入視頻文件
        c = 0
        rval = vc.isOpened()

        while rval:  # 循環讀取視頻幀
            c = c + 1

            rval, frame = vc.read()
            if c%10 ==0:
                pic_path = folder_name + '/'
                if rval:
                    cv2.imwrite(pic_path + str(c) + '.png', frame)  # 存儲為圖像,保存名為文件夾名
                    cv2.waitKey(1)
                else:
                    break
        vc.release()
        print('save_success')
        print(folder_name)


save_img()

存在問題

讀取路徑問題

問題:讀取視頻結果顯示沒有打開視頻,檢查發現視頻路徑錯誤,導致沒有正確打開

解決:可以在讀取之前檢查路徑,即判斷要保存的文件夾是否存在,不存在就創建該文件夾。代碼如下:

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

中文路徑問題

問題:cv2.imwrite()保存圖像路徑不能存在中文字符,否則無法保存,并且沒有任何提示!!!

解決:改為英文路徑即可。

最終結果

opencv如何讀取視頻并保存圖像

opencv如何讀取視頻并保存圖像

感謝你能夠認真閱讀完這篇文章,希望小編分享的“opencv如何讀取視頻并保存圖像”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尖扎县| 资讯| 乌兰察布市| 灵璧县| 襄垣县| 德令哈市| 大余县| 汉沽区| 桐梓县| 同江市| 贡嘎县| 莱芜市| 仁寿县| 大港区| 四平市| 从化市| 西林县| 泾阳县| 开远市| 富川| 镇赉县| 土默特右旗| 莒南县| 桐城市| 浦江县| 前郭尔| 梁平县| 肥城市| 冀州市| 项城市| 崇礼县| 桃源县| 新和县| 莱西市| 周至县| 舒兰市| 郁南县| 洛南县| 忻州市| 东丰县| 武宁县|