Java 对视频流抽帧

Java 对视频流抽帧,解决 java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.ffmpeg.global.avutil问题, 打的jar包过大的问题

1.依赖

此版依赖可以解决 java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.ffmpeg.global.avutil问题

也可以解决 打的jar包过大的问题

<!-- javacv+javacpp核心库-->
  <dependency>
      <groupId>org.bytedeco</groupId>
      <artifactId>javacv</artifactId>
      <version>1.5.6</version>
  </dependency>
  <dependency>
      <groupId>org.bytedeco</groupId>
      <artifactId>javacpp-platform</artifactId>
      <version>1.5.6</version>
  </dependency
### Java 实现视频流的方法 为了在 Java 中实现从视频流的功能,可以利用 OpenCV 库来完成这一操作。OpenCV 是一个开源计算机视觉库,支持多种编程语言,其中包括 Java。 #### 使用 OpenCV 进行视频流 通过 `VideoCapture` 类可以从摄像头或其他视频源读取数据,并将其转换成图像。以下是具体的操作流程: 1. **初始化 VideoCapture 对象** 创建一个新的 `VideoCapture` 实例并与指定的设备索引或者文件路径关联起来。对于大多数情况来说,默认摄像机通常对应于索引0。 2. **循环读取每一** 调用 `read()` 方法将当前捕获到的画面存储在一个矩阵对象 (`Mat`) 中;如果返回值为 true,则表示成功读到了一画面。 3. **保存或处理所获得的数据** 可以直接显示这些图片、对其进行分析或是按照需求保存下来作为静态图像文件。 下面是完整的示例外加必要的导入语句[^3]: ```java // 导入所需的类 import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.highgui.HighGui; import org.opencv.highgui.VideoCapture; public class CaptureFrames { public static void main(String[] args) throws InterruptedException { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 初始化 VideoCapture 并连接默认相机 VideoCapture camera = new VideoCapture(0); Mat frame = new Mat(); int count = 0; while (true){ boolean success = camera.read(frame); if (!success || frame.empty()) break; // 显示捕捉到的一 HighGui.imshow("Camera", frame); // 按下 ESC 键退出程序 char key = (char)HighGui.waitKey(10); if(key == 27 ) {break;} // 定期保存某些至本地磁盘上 if(count % 50 == 0){ // 每隔五十次迭代执行一次 String filename = "./frame-" + System.currentTimeMillis() + ".jpg"; Imgcodecs.imwrite(filename, frame); System.out.println("Saved image to " + filename); } ++count; } // 清理资源 camera.release(); HighGui.destroyAllWindows(); } } ``` 此代码片段展示了如何设置和配置用于抓拍照片的应用程序逻辑。每当计数器达到设定阈值时就会触发截图动作并将结果存放到项目根目录下的相应位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值