Articles of javacv

将videourl加载到FFmpegFrameGrabber中

JavaCV FFmpegFrameGrabber是否支持使用url作为video源? 我尝试过使用: grabber = new FFmpegFrameGrabber(“http://techslides.com/demos/sample-videos/small.mp4”); grabber.setFormat(“mp4”); grabber.start() 但是start()会抛出以下错误 org.bytedeco.javacv.FrameGrabber$Exception: avformat_open_input() error -5: Could not open input “http://techslides.com/demos/sample-videos/small.mp4”. (Has setFormat() been called?) 顺便说一下,我在Android上开发,使用SD卡的video文件,一切都很好。 谢谢!

javaCV Android,流式传输到rtmp服务器时叠加的奇怪颜色

我想从android直播到facebook。 我能够调整现有的流式传输示例到FB。 第一步或多或少有效(音频仍然是一个问题,但不在她的范围内)。 我可以流到FB。 我现在想用透明的png图像覆盖流。 我在启动时创建一个FFmpegFrameFilter: try{ filter = new FFmpegFrameFilter(“movie=”+path+”/image.png [logo];[in][logo]overlay=0:0:format=rgb [out]”,imageWidth, imageHeight); filter.start(); }catch (FrameFilter.Exception e){ Log.e(CLASS_LABEL,”Error while starting filter: “+e.getMessage()); e.printStackTrace(); } 并在每个框架上执行以下操作: filter.push(yuvImage); Frame frame; while ((frame = filter.pull()) != null) { recorder.record(frame,avutil.AV_PIX_FMT_NV21); } 问题是我不知道我应该使用哪种像素格式。 我的叠加图像有rgb颜色( https://postimg.org/image/f1ri3vj43/ ) 使用上面的像素格式,我得到这样的东西: https : //postimg.org/image/45ha64q9z/ 我很沮丧,因为我已经尝试了很多像素格式。 所有输出都不同,有时徽标会多次出现。 有没有办法找出我应该从avutil.java的可能性中选择哪一个? 编辑:您可以在https://github.com/y4nnick/android_streaming/blob/master/app/src/main/java/com/example/yannick/olay1/RecordActivity.java上find整个代码。 编辑:我已经尝试过以下格式: // AV_PIX_FMT_ARGB –> 4 […]

如何在Android上使用FaceDetector.Face进行人脸识别

这是我在这里的第一篇文章,所以如果我的问题不明确或者提供的信息不足,我很抱歉。 我目前正在研究一种可以识别图片中脸部的Android应用程序。 我的第一种方法是使用JavaCV并且一切正常,除了面部检测需要花费太多时间才能完成的事实! 之后,我尝试使用FaceDetector.Face检测面部。 然后我使用检测到的面部来训练我的脸部识别器模型。 到目前为止没有发现任何错误。 我的问题是我的模型无法识别FaceDetector.Face给出的任何检测到的面部。 我总是从预测函数得到-1。 谁能说出可能出错的地方呢? 先谢谢你! 这是我在检测后裁剪面部的方法: for(int count=0;count<NUMBER_OF_FACE_DETECTED;count++) { Face face=detectedFaces[count]; PointF midPoint=new PointF(); face.getMidPoint(midPoint); eyeDistance=face.eyesDistance(); left = midPoint.x – (float)(1.4 * eyeDistance); top = midPoint.y – (float)(1.8 * eyeDistance); bmFace = Bitmap.createBitmap(origiImage, (int) left, (int) top, (int) (2.8 * eyeDistance), (int) (3.6 * eyeDistance)); bmFaces.add(bmFace); } 这是培训模型的主要部分。 MatVector images […]

如何使用javacv将图像转换为Android中的video?

我希望将sdcard图像转换为android中的video。经过多次搜索我发现它有可能在javacv.when我在纯java中尝试简单的javacv示例,它在我的eclipse中完美运行。但是当我变成android时,同样的示例不在android.i下载中运行并在myproject-> libs / armeabi文件夹中添加所有.jar文件和.so文件。我的项目没有显示任何错误。但是在运行时期间出现错误。 我试着上课, package com.example.ndkfoo_sample; import static com.googlecode.javacv.cpp.opencv_core.cvReleaseImage; import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImage; import static com.googlecode.javacv.cpp.opencv_highgui.cvShowImage; import static com.googlecode.javacv.cpp.opencv_highgui.cvWaitKey; import static com.googlecode.javacv.cpp.opencv_imgproc.CV_GAUSSIAN; import static com.googlecode.javacv.cpp.opencv_imgproc.cvSmooth; import com.googlecode.javacv.cpp.opencv_core.IplImage; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { // @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IplImage img=cvLoadImage(“helloworld.jpg”); cvShowImage(“/mnt/sdcard/helloworld”,img); cvSmooth(img,img,CV_GAUSSIAN,13); cvShowImage(“Blur-Image”,img); cvWaitKey(); cvReleaseImage(img); […]

opencv经理包没find? 如何自动安装?

我正在使用openCV,每当我运行代码时它都会给我包管理器没有安装,那么如何通过我的应用程序安装它。是必须从Play商店下载它还是我们可以在设备中自动安装它。 请帮帮我。 提前致谢。

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

有人能告诉我我在哪里做错了吗? 这些是我遵循的步骤: 从android开发者网站下载了adt-bundle-windows 创建了一个新项目和一个libs / armeabi文件夹 将所有* .so文件从javacv-android-arm.jar,opencv-2.4.3-android-arm.zip和ffmpeg-1.0-android-arm.zip直接提取到新创建的“libs / armeabi”文件夹中,没有创建任何新的子目录。 (我不明白的一部分是“从javacv-android-arm.jar中提取所有* .so文件” ,我只是在libs / armeabi文件夹中插入了javacv-android-arm.jar文件) 导航到项目>属性> Java构建路径>库,然后单击“添加JAR …”。 从新创建的“libs”文件夹中选择javacpp.jar和javacv.jar。 之后我从这里下载了OpenCV2.4.3,从这里下载了ffmpeg,并在我的C:/ root上解压缩了文件。 最后在设置我的系统路径后…, 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创建video

为了从android中的图像序列创建video,我使用了javacv 0.6库,但我遇到了问题:它通常适用于htc Sensation(Android 4.0.1,处理器typesarmv7)和htc Desire(Android 2.3.3,处理器typesarm7)手机,但它不适用于htc Wildfire(Android 2.3.5,处理器typesarmv6)手机,特别是它在这部分代码中失败了 FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(videoFilePath, TalkingPhotoConstants.VIDEO_FRAME_WIDTH,TalkingPhotoConstants.VIDEO_FRAME_HEIGHT); 在附加的代码中。 public class MovieCreator extends AsyncTask { private opencv_core.IplImage[] iplimage; private String audioFilePath; private ProgressDialog progressDialog; private Context context; private List frames; public MovieCreator(Context context, opencv_core.IplImage[] images, String audioFilePath, List frames) { this.context = context; this.iplimage = images; this.audioFilePath = audioFilePath; […]

使用JavaCV和FFmpeg播放video

所以,我正在为Android开发一个自定义video播放器,但我需要播放超过Android支持的video文件(mp4,3gp …),如wmv,avi,flv。 此时我已经将任何videotypes转换为.mp4并且我可以在重新编码后播放它们,但我不知道如何在不将它们重新编码为mp4的情况下播放这些wmv,avi文件。 有没有什么方法可以在Android上播放任何video而无需重新编码? JavaCV + FFmpeg库已经工作,只是不知道该怎么做。 顺便说一句,inheritance人我用来重新编码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 […]

在纵向模式下,JavaCV录像机方向不正确

嗨,我正在使用https://github.com/bytedeco/javacv/录制video。 使用横向模式时,方向很好但是当我将方向更改为纵向模式时,video旋转-90度。 任何机构都知道我可能做错了什么。 这是代码。 package org.bytedeco.javacv_android_example.record; import android.app.Activity; import android.content.Context; import android.content.pm.ActivityInfo; import android.hardware.Camera; import android.hardware.Camera.PreviewCallback; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.os.PowerManager; import android.util.Log; import android.view.Display; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; import org.bytedeco.javacpp.opencv_core; import […]

Android上的面部识别

我正在尝试在Android上开发一个Face Recognition应用程序,因为我不想在项目中使用NDK(只是没有时间切换),我坚持使用Java开发整个应用程序,因此我遇到了一些问题: 似乎Contrib模块不包含在OpenCV 2.4.2中。 无论如何在项目中使用它? 我尝试使用JavaCV来使用Contrib模块的“FaceRecognizer”类。 有两个类可用,称为“FaceRecognizer”和“FaceRecognizerPtr”。 有谁知道这两者之间的区别是什么? 上面提到的类有一个叫做“Train”的方法,它在(C ++中)接收两个types为“Mat&Integer”的矢量( model->train(images,labels) & train(Vector theImages, Vector theLabels我尝试在Java中传递它们的ArrayList & ArrayList和Vectors,但似乎该方法显式接受了“CvArr”数据types,我不知道如何获取…这是错误: opencv_contrib.FaceRecognizertypes中的方法train(opencv_core.CvArr,opencv_core.CvArr)不适用于参数(ArrayList,ArrayList) 有谁知道如何将我的ArrayList更改为CvArr? 这是我的第一篇文章,我不确定是在一个post还是在三个post中提出所有三个问题,对于给您带来的任何不便表示遗憾…如果您需要有关该项目的任何其他信息,请随时提出。