返回顶部
首页 > 资讯 > 精选 >如何使用opencv分类白天与夜景视频
  • 418
分享到

如何使用opencv分类白天与夜景视频

2023-06-15 08:06:05 418人浏览 八月长安
摘要

本篇文章和大家了解一下如何使用OpenCV分类白天与夜景视频。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。简诉最近有个数据需要分类处理,是一批含有白天跟夜晚的视频数据,需要进行区分开来,单个视频严格是只有一个场景的,比如

本篇文章和大家了解一下如何使用OpenCV分类白天与夜景视频。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

简诉

最近有个数据需要分类处理,是一批含有白天跟夜晚的视频数据,需要进行区分开来,单个视频严格是只有一个场景的,比如说白天整个视频就一定是白天,因为数据量有些大,几千个视频,所以就使用代码简单区分下,最后运行结果还可以,准确率百分之80十多,当然本批数据不用太严格,所以代码区分完全够了。

逻辑

  •  opencv读取视频

  • 视频帧图片转为灰度值图片

  • 检测偏暗元素所占整张图片的比例,大于一定阈值就认为该视频为黑夜。

  • 选取一部分视频进行判断,并不是整个视频跑完。

  • 当这部分视频帧为黑夜占比选取全部视频帧的50%时认为该视频为黑夜环境,移动该视频文件到另外一个文件夹。

结果

最初先测试9个视频,100%分类正确。

如何使用opencv分类白天与夜景视频

如何使用opencv分类白天与夜景视频

如何使用opencv分类白天与夜景视频

在进行多次阈值预设后,选取一个比较合适的阈值进行处理,准确率大概86%左右。

源码

import cv2import numpy as npimport os,timeimport shutildef 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):    #把图片转换为灰度图    gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    #获取灰度图矩阵的行数和列数    r,c = gray_img.shape[:2]    piexs_sum=r*c #整个图的像素个数    #遍历灰度图的所有像素    #灰度值小于60被认为是黑    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,认为为整体环境黑暗的图片        return 1    else:        return 0if __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秒结束        avg_fps=end_fps-start_fps #总共fps        video_capture.set(cv2.CAP_PROP_POS_FRAMES, start_fps) #设置视频起点        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])

以上就是如何使用opencv分类白天与夜景视频的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网精选频道哦!

--结束END--

本文标题: 如何使用opencv分类白天与夜景视频

本文链接: https://lsjlt.com/news/279241.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用opencv分类白天与夜景视频
    本篇文章和大家了解一下如何使用opencv分类白天与夜景视频。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。简诉最近有个数据需要分类处理,是一批含有白天跟夜晚的视频数据,需要进行区分开来,单个视频严格是只有一个场景的,比如...
    99+
    2023-06-15
  • opencv 分类白天与夜景视频的方法
    简诉 最近有个数据需要分类处理,是一批含有白天跟夜晚的视频数据,需要进行区分开来,单个视频严格是只有一个场景的,比如说白天整个视频就一定是白天,因为数据量有些大,几千个视频,所以就使...
    99+
    2024-04-02
  • 如何使用使用python+opencv解析视频并处理视频中的水印
    本篇内容主要讲解“如何使用使用python+opencv解析视频并处理视频中的水印”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用使用python+opencv解析视频并处理视频中的水印”...
    99+
    2023-06-02
  • 如何使用python opencv库玩转视频帧率
    这篇“如何使用python opencv库玩转视频帧率”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用pyt...
    99+
    2023-06-30
  • 如何使用Python的OpenCV库处理图像和视频
    目录介绍计算机视觉OpenCV应用:安装使用 OpenCV 处理图像1. 从文件中读取图像2. 调整图像大小:3. 旋转图像4. 翻转图像:5. 重写图像6. 裁剪图像7. 绘制形状...
    99+
    2024-04-02
  • OpenCV如何使用BSM统计视频中移动的对象
    本文小编为大家详细介绍“OpenCV如何使用BSM统计视频中移动的对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV如何使用BSM统计视频中移动的对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-07-05
  • 详解python  OpenCV如何使用背景分离方法
    目录目标理论实现代码分析结果目标 在本章中,将学习: 背景分离(Background Subtraction)OpenCv函数cv2.VideoCapture, cv2.Backgr...
    99+
    2023-05-17
    python OpenCV背景分离 python OpenCV
  • 如何使用MySQL和Java实现一个简单的视频分享功能
    如何使用MySQL和Java实现一个简单的视频分享功能随着互联网的普及和带宽的提升,视频分享成为了当今最受欢迎的网络媒体形式之一。在这篇文章中,我们将探讨如何使用MySQL和Java来实现一个简单的视频分享功能。一、数据库设计首先,我们需要...
    99+
    2023-10-22
    MySQL Java 视频分享
  • 如何使用Python+selenium实现趣头条的视频自动上传与发布
    这篇文章主要为大家展示了“如何使用Python+selenium实现趣头条的视频自动上传与发布”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Python+selenium实现趣头条的视频...
    99+
    2023-06-22
  • Python如何使用OpenCV和K-Means聚类对毕业照进行图像分割
    这篇文章给大家分享的是有关Python如何使用OpenCV和K-Means聚类对毕业照进行图像分割的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们将看到一种图像分割方法,即K-Means Clustering。...
    99+
    2023-06-15
  • 如何使用CSS Paint API动态创建与分辨率无关的可变背景效果
    这篇文章给大家分享的是有关如何使用CSS Paint API动态创建与分辨率无关的可变背景效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。现代Web应用对图像的需求量很大,它们占据网络下载的大部分字节。通过优化...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作