【OpenCV学习】准确定位帧
问题描述:关键帧提取后,将会得一序列关键帧的帧号,然后需要把这些帧保存起来,以便于浏览和管理.
通过opencv里的VideoCapture的函数set(CV_CAP_PROP_POS_FRAMES,nextFrameNumber),定位到具体的帧号,但最终读取的并不是对应帧的图像.
问题出现的原因:
Opencv底层是通过ffmpeg读取视频.其中定位主要用av_seek_frame()来定位frame的位置.
int av_seek_frame(AVFormatContext *s,int stream_index,int64_t timestamp,int flags)其中最后一个参数有
AVSEEK_FLAG_BACKWARD = 1 // seek backward
AVSEEK_FLAG_BYTE = 2 // seeking based on position in bytes
AVSEEK_FLAG_ANY = 4 // seek to any frame,even non key-frames.
ffmpeg默认的是选取关键帧,opencv里面这个函数的参数flag是0.
因而,进行定位时,若下一帧不是关键帧,进行读取时会出跳跃现象.
将参数改为AVSEEK_FLAG_ANY,虽然可以解决跳跃现象,读取任何帧图像.
但是将会出现花屏现象,因为帧图像解码是需要利用关键帧的图像进行帧间的解码,
若读取帧图像时,其对应关键帧没有被读取解码,将只会对该帧进行帧内解码得到花屏图像.
如何才能解决跳跃现象,但不产生花屏图像?
解决思路:读取下一帧号最相近且前面的关键帧,然后一帧帧的读取视频,直到读到下一帧的帧号为止.
将Opencv2.3.1里面的cap_ffmpeg_impl.cpp里面bool CvCapture_FFMPEG::setProperty( int property_id, double value )函数改成如下实现方式,
即可达到准确定位的效果.
【OpenCV学习】准确定位帧相关推荐
- 实现opencv在图片上画框准确定位某个主体
前言 本章主要讲述图片的缩小与放大,以及在图片上框出自己目标的东西 目录 实现opencv在图片上画框准确定位某个主体 一.如何在opencv内导入图片 二.如何对图片进行缩放? 1.在放入图片的基础 ...
- 结合openCV学习DIP之传统图像特征与匹配
前言 关于图像的预处理部分参考 结合opencv学习DIP 概述 该笔记主要是基于DIP理论➕openCV实现,学习该笔记首先要确保通读DIP理论,并由自己的话描述相关知识,并且掌握o ...
- 结合opencv学习DIP
关于传统的DIP中的图像特征,描述子提取及匹配问题,参考 结合openCV学习DIP之传统图像特征与匹配 第一部分DIP基础 图像的简单操作 imread()加载图像 imread加载图 ...
- 结合openCV学习DIP之机器学习CNN
综述 结合openCV学习DIP之传统图像特征与匹配 图像特征 图像的浅层特征主要是颜色.纹理和形状 图像特征是指: 可以表达图像中对象的主要信息, 并且以此为依据可以从其他未知图像中检测出相似或相同 ...
- 深度学习LiDAR定位:L3-Net
深度学习LiDAR定位:L3-Net 摘要 本文提出L3-Net--一种新颖的基于学习的LiDAR定位系统,可实现厘米级的定位,与现有最高水平的传统定位算法相媲美.与传统定位算法不同,本文创新地实现了 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- OpenCV学习笔记(六)(七)(八)(九)(十)
OpenCV学习笔记(六)--对XML和YAML文件实现I/O操作 1. XML.YAML文件的打开和关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: [c ...
- OpenCV学习案例之车牌识别EasyPR
OpenCV学习案例之车牌识别easyPR 起始 github上开源中文车牌识别库比较少: HyperLPR,基于深度学习高性能中文车牌识别库,支持python.c++, 可以在Android,Lin ...
- OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()
OpenCV学习(二十三) :模板匹配:matchTemplate() 1.概述 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配 ...
- OPENCV学习笔记 - SIFT 尺度不变特征变换 Python
OPENCV学习笔记 - SIFT 尺度不变特征变换 Python 为什么我们需要SIFT尺度不变特征变换? 第一,建立高斯差分金字塔 第二,极值点的精确定位 第三,确定关键点的主方向 第四,构建关键 ...
最新文章
- @value报错_Excel这都是些啥?#VALUE!、#DIVO!、#NUM!、#REF!、#NULL!、#NA!
- js事件循环 microtask macrotask
- HTML 事件属性_03
- 互联网1分钟 |1205
- Zuul网关原理及源码解读(草稿版)
- 大学计算机技术类社团/组织——社团官方网站
- VC6.0 导入资源崩溃
- lsd 特征点匹配代码_OpenCvSharp 通过特征点匹配图片
- 抽奖送福利|8大福利任性送,快来抽它
- Kotlin数据类型(一:数据类型)
- Vue 2与Vue 3在自定义组件v-model上的区别
- 技术人创业建站简略指南(第一季)
- mysql最多多少slave_MySQL5.7主从,单slave多master
- 第一章 Javascript基础
- 自行车html模板,自行车和配件HTML模板
- 高中计算机学科关于德育的论文,浅析如何在信息技术教学中实现德育教育
- 截止失真放大电路_BJT的失真
- html 页眉选项卡,连续两个奇数页页眉 再选择插入菜单——分页,执行2次
- 电脑编程和计算机编程有什么区别,机器人编程与电脑编程有何区别?官方专家为你详细解说!...
- [N1CTF 2022] solve_pow,baby_N1ES