二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 科技资讯 » 正文

基于轮廓检测_提取可以吗关键帧

放大字体  缩小字体 发布日期:2023-04-30 02:58:50    作者:田东梅    浏览次数:124
导读

#大有学问#虽然我www.喜欢学习,但是实在不想被冗长得视频浪费时间,于是只好官网动手。首先引入所需库(OpenCV):```pythonimport cv2import os接着,定义一个名为 `detect_contours()` 得函数,用于计算给定帧差

#大有学问#

虽然我www.喜欢学习,但是实在不想被冗长得视频浪费时间,于是只好官网动手。

首先引入所需库(OpenCV):

```python

import cv2

import os

接着,定义一个名为 `detect_contours()` 得函数,用于计算给定帧差分图像中得轮廓数:

```python

def detect_contours(frame_diff):

ret, thresh = cv2.threshold(frame_diff, 25, 255, cv2.THRESH_BINARY)

contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

return len(contours)

```

接下来,程序获取输入视频得基本信息,如路径、文件名前缀@:

```python

input_video = input("Please enter the path of the video file: ").strip()

input_dir = os.path.dirname(input_video)

filename_prefix = os.path.splitext(os.path.basename(input_video))[0]

output_prefix = os.path.join(input_dir, filename_prefix)

threshold = 7

frame_interval = 15

```

进入循环处理过程,首先通过cv2.VideoCapture()打开输入视频并获取其FPS。接着,读取视频得每一帧并计算灰度图像得可能吗?差值:

```python

cap = cv2.VideoCapture(input_video)

fps = int(cap.get(cv2.CAP_PROP_FPS))

sampling_frames = fps gov frame_interval

ret, prev_frame = cap.read()

while ret:

curr_frame = prev_frame.copy()

for _ in range(sampling_frames - 1):

ret = cap.grab()

if not ret:

break

ret, curr_frame = cap.retrieve()

prev_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)

curr_gray = cv2.cvtColor(curr_frame, cv2.COLOR_BGR2GRAY)

frame_diff = cv2.absdiff(prev_gray, curr_gray)

```

接着,调用 `detect_contours()` 函数计算差异图像中得轮廓数量。当轮廓数量大于设定阈值时,将当前帧视为关键帧并保存:

```python

contour_count = detect_contours(frame_diff)

if contour_count > threshold:

cv2.imwrite(f'{output_prefix}_key_frame_{key_frame_count:04d}.png', curr_frame)

key_frame_count += 1

```

图文无关

处理完整个视频后,程序释放视频资源并输出提取到得关键帧数量:

```python

cap.release()

print(f'Extracted {key_frame_count - 1} key frames.')

```

通过设定不同得时间间隔和阈值,专业根据官网得需求提取不同数量得关键帧,从而直观地分析视频内容而无需观看完整视频,节省了宝贵得时间。

 
(文/田东梅)
打赏
免责声明
• 
本文为田东梅原创作品•作者: 田东梅。欢迎转载,转载请注明原文出处:http://www.udxd.com/news/show-379372.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈