gpt4 book ai didi

java - 如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:51 25 4
gpt4 key购买 nike

    import org.opencv.core.Core;        
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
import org.opencv.imgproc.Imgproc;

public class Video
{
public static void main(String[] args)
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

VideoCapture cap = new VideoCapture(0);

cap.open(1);

if(!cap.isOpened())
{
System.out.println("No camera");
}

else
{
System.out.println("Yes. Camera");
}

Mat frame = new Mat();
cap.retrieve(frame);

Highgui.imwrite("me1.jpg", frame);
Mat frameBlur = new Mat();

Imgproc.blur(frame, frameBlur, new Size(5,5));
Highgui.imwrite("me2-blurred.jpg", frameBlur);

Imgproc.GaussianBlur(frame, frameBlur, new Size(25, 25), 20);
Highgui.imwrite("me3-blurred.jpg", frameBlur);

cap.release();
}
}

我已使用此代码打开我的相机设备并捕获 3 个不同的帧并对其进行了一些操作。但是,我无法使用 VideoCapture 的 {n_open} 方法打开 .avi/.mpg/.mp4 等文件。 VideoCapture实现中有一个方法here .但是因为它是一个私有(private)的 native 方法,所以不能使用 VideoCapture 的对象访问该方法。

有人可以帮助如何使用纯 OpenCV 2.4.6 和 Java 做到这一点
(请不要建议使用 Processing 库的解决方案)

最佳答案

看看 OpenCV 2.4.8VideoCapture API 扩展了public VideoCapture(String filename) 方法。问题仍然是为什么这么晚才实现此功能。

如果出于某种原因您不能接受使用最新版本的 OpenCV,您有多种选择:

  • 自己用这个方法标记为public重建OpenCV

  • 技巧一:使用公共(public) VideoCapture(String) 构造函数复制 VideoCapture 类(或扩展原始类并使用反射)。然后通过使用 C++ OpenCV API 创建您自己的 DLL 来支持本地方法 private static native long n_VideoCapture(java.lang.String filename)。 (测试!)

关于java - 如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com