最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv 分類白天與夜景視頻的方法

 更新時間:2021年06月04日 14:25:49   作者:Try it.  
最近有個數(shù)據(jù)需要分類處理,是一批含有白天跟夜晚的視頻數(shù)據(jù),需要進行區(qū)分開來,本文就來實現(xiàn),感興趣的可以了解一下

簡訴

最近有個數(shù)據(jù)需要分類處理,是一批含有白天跟夜晚的視頻數(shù)據(jù),需要進行區(qū)分開來,單個視頻嚴(yán)格是只有一個場景的,比如說白天整個視頻就一定是白天,因為數(shù)據(jù)量有些大,幾千個視頻,所以就使用代碼簡單區(qū)分下,最后運行結(jié)果還可以,準(zhǔn)確率百分之80十多,當(dāng)然本批數(shù)據(jù)不用太嚴(yán)格,所以代碼區(qū)分完全夠了。

邏輯

  •  opencv讀取視頻
  • 視頻幀圖片轉(zhuǎn)為灰度值圖片
  • 檢測偏暗元素所占整張圖片的比例,大于一定閾值就認(rèn)為該視頻為黑夜。
  • 選取一部分視頻進行判斷,并不是整個視頻跑完。
  • 當(dāng)這部分視頻幀為黑夜占比選取全部視頻幀的50%時認(rèn)為該視頻為黑夜環(huán)境,移動該視頻文件到另外一個文件夾。

結(jié)果

最初先測試9個視頻,100%分類正確。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在進行多次閾值預(yù)設(shè)后,選取一個比較合適的閾值進行處理,準(zhǔn)確率大概86%左右。

源碼

import cv2
import numpy as np
import os,time
import shutil
def GetImgNameByEveryDir(file_dir,videoProperty):  
    FileNameWithPath = [] 
    FileName         = []
    FileDir          = []
    for root, dirs, files in os.walk(file_dir):  
        for file in files:  
            if os.path.splitext(file)[1] in videoProperty:  
                FileNameWithPath.append(os.path.join(root, file))  # 保存圖片路徑
                FileName.append(file)                              # 保存圖片名稱
                FileDir.append(root[len(file_dir):])               # 保存圖片所在文件夾
    return FileName,FileNameWithPath,FileDir
 
def img_to_GRAY(img,pic_path):
    #把圖片轉(zhuǎn)換為灰度圖
    gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #獲取灰度圖矩陣的行數(shù)和列數(shù)
    r,c = gray_img.shape[:2]
    piexs_sum=r*c #整個圖的像素個數(shù)
    #遍歷灰度圖的所有像素
    #灰度值小于60被認(rèn)為是黑
    dark_points = (gray_img < 60)
    target_array = gray_img[dark_points]
    dark_sum = target_array.size #偏暗的像素
    dark_prop=dark_sum/(piexs_sum) #偏暗像素所占比例
    if dark_prop >=0.60: #若偏暗像素所占比例超過0.6,認(rèn)為為整體環(huán)境黑暗的圖片
        return 1
    else:
        return 0

if __name__ =='__main__':
    path="C:\\Users\\Administrator\\Desktop\\cut_video"
    new_path=path+"\\DarkNight"
    if not os.path.exists(new_path):
        os.mkdir(new_path)
    FileName,FileNameWithPath,FileDir=GetImgNameByEveryDir(path,'.mp4')
    for i in range(len(FileNameWithPath)):
        video_capture = cv2.VideoCapture(FileNameWithPath[i])
        video_size = (int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
        total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))
        video_fps = int(video_capture.get(5))
        start_fps=2*video_fps #從2秒開始篩選
        end_fps=6*video_fps #6秒結(jié)束
        avg_fps=end_fps-start_fps #總共fps
        video_capture.set(cv2.CAP_PROP_POS_FRAMES, start_fps) #設(shè)置視頻起點
        new_paths=new_path+"\\"+FileName[i]
        j=0
        count=0
        while True:
            success,frame = video_capture.read()
            if success:
                j += 1
                if(j>=start_fps and j <= end_fps):
                    flag=img_to_GRAY(frame,FileNameWithPath[i])
                    if flag==1:
                        count+=1
                elif(j>end_fps):
                    break
            else:
                break
        print('%s,%s'%(count,avg_fps))
        if count>int(avg_fps*0.48): #大于fps50%為黑夜
            print("%s,該視頻為黑夜"%FileNameWithPath[i])
            video_capture.release() #釋放讀取的視頻,不占用視頻文件
            time.sleep(0.2)
            shutil.move(FileNameWithPath[i],new_paths)
        else:
            print("%s,該視頻為白天"%FileNameWithPath[i])

到此這篇關(guān)于opencv 分類白天與夜景視頻的方法的文章就介紹到這了,更多相關(guān)opencv 分類白天與夜景視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 圖文詳解如何利用PyTorch實現(xiàn)圖像識別

    圖文詳解如何利用PyTorch實現(xiàn)圖像識別

    這篇文章主要給大家介紹了關(guān)于如何利用PyTorch實現(xiàn)圖像識別的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用PyTorch具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-04-04
  • Pytorch可視化之Visdom使用實例

    Pytorch可視化之Visdom使用實例

    Visdom 是一個專門用于 PyTorch 的交互式可視化工具,可以對實時數(shù)據(jù)進行豐富的可視化,幫助我們實時監(jiān)控在遠程服務(wù)器上進行的科學(xué)實驗,這篇文章主要給大家介紹了關(guān)于Pytorch可視化之Visdom使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 如何用python做簡單的接口壓力測試

    如何用python做簡單的接口壓力測試

    這篇文章主要介紹了如何用python做簡單的接口壓力測試問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python計算書頁碼的統(tǒng)計數(shù)字問題實例

    python計算書頁碼的統(tǒng)計數(shù)字問題實例

    這篇文章主要介紹了python計算書頁碼的統(tǒng)計數(shù)字問題實例,對比2個實例講述了數(shù)字統(tǒng)計的技巧,非常實用,需要的朋友可以參考下
    2014-09-09
  • Python算法練習(xí)之二分查找算法的實現(xiàn)

    Python算法練習(xí)之二分查找算法的實現(xiàn)

    二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。本文將介紹python如何實現(xiàn)二分查找算法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2022-06-06
  • Python實用工具之實現(xiàn)PDF轉(zhuǎn)DOCX文檔

    Python實用工具之實現(xiàn)PDF轉(zhuǎn)DOCX文檔

    pdf2docx作為第三方包,提供了非常優(yōu)秀的功能,僅僅幾行代碼就可以完成PDF轉(zhuǎn)換為DOCX的工作,所以本文就來利用pdf2docx實現(xiàn)PDF轉(zhuǎn)DOCX文檔功能吧
    2023-12-12
  • python使用pyecharts庫畫地圖數(shù)據(jù)可視化的實現(xiàn)

    python使用pyecharts庫畫地圖數(shù)據(jù)可視化的實現(xiàn)

    這篇文章主要介紹了python使用pyecharts庫畫地圖數(shù)據(jù)可視化的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python使用socket進行簡單網(wǎng)絡(luò)連接的方法

    python使用socket進行簡單網(wǎng)絡(luò)連接的方法

    這篇文章主要介紹了python使用socket進行簡單網(wǎng)絡(luò)連接的方法,實例分析了Python使用socket的基本技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python kmeans聚類簡單介紹和實現(xiàn)代碼

    python kmeans聚類簡單介紹和實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了python kmeans聚類簡單介紹和實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python實現(xiàn)中英文全文搜索的示例

    Python實現(xiàn)中英文全文搜索的示例

    這篇文章主要介紹了Python實現(xiàn)中英文全文搜索的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12

最新評論

新源县| 德惠市| 集贤县| 鱼台县| 靖远县| 炉霍县| 临武县| 高安市| 神农架林区| 普安县| 浠水县| 永修县| 高平市| 清苑县| 呼伦贝尔市| 枣强县| 贵定县| 常熟市| 米泉市| 岐山县| 海盐县| 海原县| 安阳市| 沽源县| 柯坪县| 滁州市| 姚安县| 根河市| 剑阁县| 宣武区| 都昌县| 资中县| 彰化市| 沙坪坝区| 陈巴尔虎旗| 肥西县| 通江县| 广灵县| 南丰县| 泸溪县| 措美县|