Articles of javacv

将两个video一起显示,然后在单个屏幕上作为合并video输出

这个问题可能听起来有点复杂或含糊不清,但我会尽量让它尽可能清楚。 我做了很多谷歌搜索并花了很多时间,但没有find任何与Windows相关的东西。 我想在一个屏幕上播放两个video。 一个在背景中全屏,一个在顶部,在一个小窗口或在右角的小宽度/高度。 然后我想要一个输出,其中包括两个video在一个屏幕上一起播放。 所以基本上一个video覆盖另一个,然后我希望将其作为输出流式传输,以便用户可以在以后播放该流。 我不是要求你编写整个代码,只是告诉我该做什么或如何做,或者我必须使用哪个工具或第三方SDK来实现它。 更新 :尝试了很多解决方案。 1. Xuggler – 不支持Android 。 2. JavaCV或JJMPEG – 无法find任何建议如何做的教程? 现在正在寻找FFMPEG-搜索了很长时间但却找不到任何建议编写方式的教程。 我find了如何解决它的命令行方式。 所以任何人都可以建议或指出FFMPEG的教程或告诉任何其他方式

Android计算机视觉JavaCV OpenCV FastCV比较

我正在研究学校项目,其中一部分应该是关于Android计算机视觉库的现状。 我以极大的热情去了它,因为计算机视觉看起来像是一个引人入胜的主题,但我一直在寻找超过一周的时间而且我找不到多少。 我希望能够提供有关库本身以及它们之间的比较的信息。 我将分享到目前为止我发现的内容。 OpenCV的 似乎是最先进的和最受欢迎的。 提供最多的function 它有向后兼容性的问题 是快的(至少我听说过,但我没有关于它的信息) 确实有最多的书籍(至少对于C ++版本) JavaCV 是少数其他库的包装,包括opencv FastCv 高通公司背后的新品。 Wikitude 这更多是为了增强现实,但其核心仍然是计算机视觉。 正如您所看到的,我有一些关于它的信息,并且对每个库进行自己的测试远远超出了我目前的计算机视觉技能。 亲切的问候,彼得。

Proguard删除Android应用程序中的注释

我在我的应用程序中使用gradle包含了一个项目: compile group: ‘org.bytedeco’, name: ‘javacv’, version: ‘0.11’ 哪个建好了。 但是每当我在启用proguard的情况下运行应用程序时,它显然会从包含的jar中删除@Platform注释。 我尝试使用基于http://proguard.sourceforge.net/manual/examples.html#annotations的以下内容 -keepattributes *Annotation* -keep @org.bytedeco.javacpp.annotation interface * { *; } 我还根据http://proguard.sourceforge.net/manual/troubleshooting.html#notkept尝试了以下内容 -keep @interface * 但这也不起作用。 还有什么可以阻止proguard删除这些注释? 我正在考虑使用-injars或-libraryjars但我相信gradle会为你处理。 解决方案: 所以解决方案如下: 我在我的proguard规则中包含以下内容: # JavaCV -keep @org.bytedeco.javacpp.annotation interface * { *; } -keep @org.bytedeco.javacpp.annotation.Platform public class * -keepclasseswithmembernames class * { @org.bytedeco.* ; } -keepclasseswithmembernames class * { […]

在android中检测录制video的方向

我想制作我的自定义媒体播放器并需要video的方向信息(用于检测它是从前置或后置摄像头录制的)。 对于jpeg图像,我可以使用ExifInterface.TAG_ORIENTATION但对于video我如何能够find这些信息。 我试图从video文件中获取帧并将其转换为jpeg,但在所有情况下它总是提供方向0 。 请帮帮我。 提前致谢。

JavaCV + Android Studio + gradle-可能吗?

我正在尝试将JavaCV与Android Studio和Gradle一起使用。 我写了这样的代码片段: repositories { mavenCentral() maven { url “http://maven2.javacv.googlecode.com/git/” } } dependencies { compile files(‘libs/android-support-v4.jar’) compile group: ‘com.googlecode.javacpp’, name: ‘javacpp’, version: ‘0.5’ compile group: ‘com.googlecode.javacv’, name: ‘javacv’, version: ‘0.5’ } 我在dir外部库中看到了导入的库。 所以我试着运行这个: … IplImage zdjecie=cvLoadImage(Environment.getExternalStorageDirectory().getPath()+ “/1.bmp”); cvSaveImage(Environment.getExternalStorageDirectory().getPath() + “/2.bmp”, zdjecie); … 我收到了错误: Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load jniopencv_core: findLibrary returned null …因为我不知道我应该用opencv(和其他人).so文件做什么。 那么我们应该如何在Android Studio中使用JavaCV?

使用Ffmpeg设置video流元数据

我正在使用JavaCV FFmpegFrameRecorder类将Android的相机预览帧编码为video。 目标是复制以下命令行的结果: ffmpeg -i input.mp4 -metadata:s:v:0 rotate=”90″ output.mp4 我修改了startUnsafe()方法如下,但它无法生成所需的输出: if ((video_st = avformat_new_stream(oc, video_codec)) != null) { video_c = video_st.codec(); video_c.codec_id(oformat.video_codec()); video_c.codec_type(AVMEDIA_TYPE_VIDEO); … AVDictionary avDictionary = new AVDictionary(null); av_dict_set(avDictionary, “rotate”, “90”, 0); video_st.metadata(avDictionaty); … } … avformat_write_header(oc, (PointerPointer) null); 这仍然可以正确编码video,但添加的元数据永远不会出现在ffprobe上。 如果有帮助,video编码为h264。 顺便说一句,这是ffprobe输出: ffprobe version 2.3.3 Copyright (c) 2007-2014 the FFmpeg developers built on Jan […]

使用OpenCV进行不稳定的人脸识别

我正在开发一个用于人脸识别的Android应用程序,使用JavaCV ,这是OpenCV的非官方包装。 导入com.googlecode.javacv.cpp.opencv_contrib.FaceRecognizer ,我应用并测试以下已知方法: LBPH使用createLBPHFaceRecognizer()方法 FisherFace使用createFisherFaceRecognizer()方法 EigenFace使用createEigenFaceRecognizer()方法 在我识别出检测到的脸部之前,我纠正了旋转的脸部并裁剪出适当的区域,从而激发了这种方法 一般情况下,当我传递相机时,数据库中已存在一个面,识别就可以了。 但这并不总是正确的。 有时它很有可能识别出未知的面部(在训练样本的数据库中找不到)。 当我们在DB中有两个或更多相似特征的面孔(胡须,小胡子,眼镜……)时,这些面孔之间的识别可能会非常错误! 要使用测试面部图像预测结果,我应用以下代码: public String predict(Mat m) { int n[] = new int[1]; double p[] = new double[1]; IplImage ipl = MatToIplImage(m,WIDTH, HEIGHT); faceRecognizer.predict(ipl, n, p); if (n[0]!=-1) mProb=(int)p[0]; else mProb=-1; if (n[0] != -1) return labelsFile.get(n[0]); else return “Unkown”; } 我无法控制概率p的阈值,因为: 小p <50可以预测正确的结果。 高p> […]

Android上的人脸识别

我试图在Android上开发一个人脸识别应用程序,因为我不想在项目中使用NDK(根本没有时间切换),我坚持用Java开发整个应用程序,因此我有一些问题: Contrib模块似乎不包含在OpenCV 2.4.2中。 有没有在项目中使用它? 我尝试使用JavaCV来使用Contrib模块的“FaceRecognizer”类。 有两个类可用称为“FaceRecognizer”和“FaceRecognizerPtr”。 有谁知道这两者之间的区别是什么? 上面提到的类有一个名为“Train”的方法,它在C ++中接收两个types为“Mat&Integer”( model->train(images,labels) & train(Vector<mat> theImages, Vector<int> theLabels )。我尝试在Java中传递ArrayList<mat> & ArrayList<integer>和Vectors,但似乎该方法显式接受“CvArr”数据types,我不知道如何获取…这是错误: opencv_contrib.FaceRecognizertypes的方法列表(opencv_core.CvArr,opencv_core.CvArr)不适用于参数(ArrayList,ArrayList) 有谁知道如何将我的ArrayList更改为CvArr? 这是我的第一篇文章,我不知道是否要在一个post或三个post中提出所有三个问题,所以给您带来的不便感到抱歉。如果您需要任何有关该项目的其他信息,请随时询问。

如何在Android上安装JavaCV并使用FrameGrabber

有人能告诉我我做错了吗? 这些是我所遵循的步骤: 从android开发者网站下载了adt-bundle-windows 创build一个新的项目和一个libs / armeabi文件夹 将所有* .so文件从javacv-android-arm.jar,opencv-2.4.3-android-arm.zip和ffmpeg-1.0-android-arm.zip中直接提取到新创build的“libs / armeabi”文件夹中,而不创build任何新的子目录。 (我不明白的一部分是“从javacv-android-arm.jar中提取所有* .so文件” ,我只是在libs / armeabi文件夹中插入javacv-android-arm.jar文件) 导航到项目>属性> Java构buildpath>库,然后单击“添加JAR …”。 从新创build的“libs”文件夹中selectjavacpp.jar和javacv.jar。 之后,我从这里下载了OpenCV2.4.3,从这里下载了ffmpeg,并提取了我的C:/ root下的文件。 最后在设置我的系统path…之后, C:\opencv\build\x64\vc10\bin;C:\ffmpeg-64\bin;C:\Program Files\Java\jdk1.7.0_10\bin 如果我尝试在我的Android应用程序中简单地使用FrameGrabber … import com.googlecode.javacv.FFmpegFrameGrabber; import com.googlecode.javacpp.Loader; import com.googlecode.javacv.*; import com.googlecode.javacv.cpp.*; import static com.googlecode.javacv.cpp.opencv_core.*; import static com.googlecode.javacv.cpp.opencv_imgproc.*; import static com.googlecode.javacv.cpp.opencv_calib3d.*; import static com.googlecode.javacv.cpp.opencv_objdetect.*; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity […]

使用JavaCV和FFmpeg播放video

所以,我正在开发一个Android的自定义video播放器,但我需要播放比Android支持的video文件(mp4,3gp …)更多,如wmv,avi,flv。 在这个时候,我已经将任何videotypes转换为.mp4,我可以在重新编码后播放它们,但我不知道如何播放这些wmv,avi文件,而无需将它们重新编码为mp4。 有没有什么办法可以在Android上播放任何video而无需重新编码? JavaCV + FFmpeg库已经在工作,只是不知道该怎么做。 顺便说一下,我用我重新编码video的代码: public static void convert(File file) { FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath()); IplImage captured_frame = null; FrameRecorder recorder = null; recorder = new FFmpegFrameRecorder("/mnt/sdcard/external_sd/videosteste/primeiroteste.mp4", 300, 300); recorder.setVideoCodec(13); recorder.setFrameRate(30); recorder.setFormat("mp4"); try { recorder.start(); frameGrabber.start(); while (true) { try { captured_frame = frameGrabber.grab(); if (captured_frame == null) { System.out.println("!!! Failed […]