如何检测两个连续的视频帧是否相同
How to detect if two successive video frames are identical or not?
我正在做一个视频的计算机视觉项目。我想检测任何两个连续的帧是否相同。这是我的代码。
capture >> currentFrame;
previousFrame = currentFrame;
do{
capture >> currentFrame;
cvtColor( currentFrame, g1, CV_BGR2GRAY );
cvtColor( previousFrame, g2, CV_BGR2GRAY );
cv::absdiff(g1,g2,diff);
int eq = cv::countNonZero(diff);
if(eq ==0)
cout<<"equal n";
else
cout<<"not equal n";
if (currentFrame.empty()){
shouldQuit = true; continue;
}
previousFrame = currentFrame;
} while (!shouldQuit);
问题是所有视频帧的结果始终相等。我不知道错误在哪里。你能帮我吗?提前谢谢。
之后
previousFrame = currentFrame;
previousFrame 和 currentFrame 都引用相同的值数组。
您需要在循环中创建一个新的 cv::Mat 对象,以便每个捕获的帧都不会覆盖之前的帧。
所以代替:
do {
capture >> currentFrame;
尝试:
do {
currentFrame = cv::Mat(width, height);
capture >> currentFrame;
相关文章:
- 如何在c++中录制具有精确帧时间戳的视频
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- vector是否为std::移动的对象连续分配内存
- 如何实时捕获相机的视频?
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 使用 OpenCV C++ 每 1 分钟创建新的视频文件
- 从iPhone相机拍摄的视频似乎被OpenCV旋转了90度?我该如何解决这个问题?
- OpenCV没有显示来自Macbook网络摄像头的视频
- 在何处更改参考代码以从 HEVC 编码的视频中提取运动矢量
- 如何使用FFMPEG从编码的视频中提取AVPACKET的重要信息
- 我的视频流程在运行darknet.exe以进行检测对象时崩溃了
- 如何使用Raspberry Pi相机作为C ++ OpenCV中的视频输入
- OpenCV噪声消除静态摄像机的视频
- 如何使用FFMPEG与C拦截编码的视频数据
- 从opencv的视频关注和标量拍摄的图像之间的整数划分
- 查找给定数组中长度为 k 的所有连续子数组的总和
- C++ - 如何让移动的点连续循环
- ARtoolkit加载从4k相机索尼捕获的视频文件
- 犰狳:arma::subview的非连续视图
- 如何检测两个连续的视频帧是否相同