博主介绍:小黄鸭技术
擅长领域:Java、实用工具、运维
系列专栏:开发工具 Java之路 八股文之路
如果文章写作时有错误的地方,请各位大佬指正,一起进步!!!
欢迎大家点赞➕收藏⭐➕评论支持博主
目录
前言
实现思路
实现代码
前后帧无变化视频制作
因为业务需要过滤掉一些无用的视频来减少算法服务器的鸭利,经过讨论决定认定视频前后帧没有变化的视频为无用视频。
通过实现光流算法来计算视频是否有用:
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
public class Main {
public static void main(String[] args) {
// 加载OpenCV库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 读取视频文件
VideoCapture cap = new VideoCapture("video.mp4");
// 读取第一帧
Mat prevFrame = new Mat();
cap.read(prevFrame);
// 循环处理剩下的帧
while (true) {
// 读取下一帧
Mat frame = new Mat();
boolean success = cap.read(frame);
// 如果到达视频结尾,则退出循环
if (!success) {
break;
}
// 计算当前帧与前一帧之间的绝对差
Mat diff = new Mat();
Core.absdiff(frame, prevFrame, diff);
// 检查差异图像是否全为零
int nonZeroCount = Core.countNonZero(diff);
if (nonZeroCount == 0) {
System.out.println("两帧之间没有变化");
} else {
System.out.println("两帧之间发生了变化");
}
// 设置前一帧为下一次迭代的当前帧
prevFrame = frame;
}
// 释放视频捕获对象
cap.release();
}
}
1.可以通过静止摄像头来拍摄。
2.下载一个静止的图片,然后使用视频编辑软件将它转换为视频文件。这样的视频中的所有帧都是一样的,因此它没有前后帧变化。
欢迎大家点赞➕收藏⭐➕评论支持博主