最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
python+opencv实现视频抽帧代码示例
时间:2022-06-25 01:56:36 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下python+opencv实现视频抽帧代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
1、数据集简述:
虽然有主流庞大的COCO、VOC数据集,但是科研人员仍需要特殊领域要求的数据集,所以采用人工实地采集的方式进行收集数据集图像;通过拍照收集图像过于繁琐,所以通常是将摄像头无规则的移动旋转以及远近拉缩,进而录制视频;再通过视频抽帧的方式得到大量的图像,再将这些图像进行人工标注处理。
通过一个水下录制视频为例子,当这类图像在网上鲜有存在时,要求有关技术人员进行实拍采集,下图即为采集得到的视频。
为了避免不符合项目要求的数据增强,博主要求技术人员在录制视频时最大程度地让摄像头进行移动、旋转以及远近调节等;这样抽帧后的图像更具有泛化性。
2、代码介绍:
下面是采用以帧数为间隔的方法进行视频抽帧,博主个人认为这样子的方式调节间隔更加方便,更符合个人习惯。
import cv2
from PIL import Image
import numpy as np
cap = cv2.VideoCapture("D:/Download/ANMR0005.mp4") # 获取视频对象
isOpened = cap.isOpened # 判断是否打开
# 视频信息获取
fps = cap.get(cv2.CAP_PROP_FPS)
imageNum = 0
sum=0
timef=15 #隔15帧保存一张图片
while (isOpened):
sum+=1
(frameState, frame) = cap.read() # 记录每帧及获取状态
if frameState == True and (sum % timef==0):
# 格式转变,BGRtoRGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 转变成Image
frame = Image.fromarray(np.uint8(frame))
frame = np.array(frame)
# RGBtoBGR满足opencv显示格式
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
imageNum = imageNum + 1
fileName = 'D:/Download/video_image/image' + str(imageNum) + '.jpg' # 存储路径
cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
print(fileName + " successfully write in") # 输出存储状态
elif frameState == False:
break
print('finish!')
cap.release()
3、代码效果:
pycharm运行py文件后结果框显示的内容:
视频抽帧得到的图像保存至指定的文件夹:
抽帧得到的图片示例:
相关文章
- 崩坏星穹铁道娜塔莎如何培养 12-22
- 塞尔达无双封印战记最佳增强补给材料一览 增强补给材料图鉴 12-22
- 塞尔达无双封印战记最佳战斗补给材料一览 战斗补给材料图鉴 12-22
- 阴阳师天剑韧心鬼切有什么技能 12-22
- 塞尔达无双封印战记最佳支援补给材料一览 支援补给材料图鉴 12-22
- 崩坏星穹铁道米沙怎么养成 12-22



