将OpenCV矩阵循环转换为JavaCV
不久前就获得了O'Reilly的" Learning Opencv"一书,从那时起,我一直在忙于将所有示例代码转换为从OpenCV到JavACV,通常也随后也进行了一些我自己的修改.一直以来,我正在尝试尽可能多地保留纯OpenCV(C语言)代码,并避免使用Java.例如,我直接通过JavACV中的OpenCV Highgui软件包直接实现了所有接口元素,而不是通过Java Swing实现.通过这样做,我希望在相对较短的时间内学习OpenCV库和一些C,并建立有用功能的库,如果我决定以后再切换到纯OpenCV,我将可以轻松地转换为C. 无论如何,我对C的了解很少,有时在处理指针时会遇到麻烦.该书建议以下代码作为最佳手段,通过3通道矩阵迭代: float sum( const CvMat* mat ) { float s = 0.0f; for(int row=0; rowrows; row++ ) { const float* ptr =
10 2024-04-08
编程技术问答社区
Javacv Blob检测
我想在我的应用程序中使用一些斑点检测,然后使用Java编写,因此使用JavaCV而不是OpenCV.我找到了许多类,例如: SimpleBlobDetector,CvBlobDetector,CvBlob,...但是我找不到在Java中使用这些教程或演示/示例代码. 谁能告诉我如何使用这些,因为我无法弄清楚,而且他们没有好的文档. 谢谢! 解决方案 我只是在这一刻解决同一问题并有第一个解决方案. 那里有很多方法,但不幸的是,其中大多数丑陋而缓慢. 到目前 这些链接将我推向正确的方向: opencv中的blob提取 /structural_analysis_and_shape_descriptors.html#cv-findcontours 这是一个完整的演示课,应该向您展示如何完成. 使用简单的物体和锋利的角落尝试使用黑色背景图像,以获得最佳效果.确保检查上面的第二个链接以了解代码中发生的事情. import static com.googlecode
18 2024-04-01
编程技术问答社区
4通道IplImage javacv转android bitmap
我正在尝试通过质量ARGB_8888检查每个相机预览的框架预览来录制视频.由于它需要4个频道,也可以使用频道4创建IPLIMAGE.现在输出有两个主要问题: 1)由iPlimage创建的位图具有灰度.即使我已经从BGR2RGBA转换了它. 2)4频道的iPlimage为我提供了与同一屏幕的位图(分为4个部分). 让我将代码放在这里. @Override public void onPreviewFrame(byte[] data, Camera camera) { if (yuvIplimage != null && recording) { videoTimestamp = 1000 * (System.currentTimeMillis() - startTime); // Where imagewidth = 640 and imageheight = 480 (As per
18 2024-03-31
编程技术问答社区
将两个视频显示在一起,然后作为一个合并的视频在一个屏幕上输出
这个问题听起来可能有些复杂或模棱两可,但是我会尽力使它清楚.我做了很多谷歌搜索,花了很多时间,但没有找到与Windows相关的内容. 我想在一个屏幕上播放两个视频.一个作为背景中的全屏,另一个作为小窗口或右角的小宽度/高度在其顶部.然后,我想要一个由两个视频组成的输出. 因此,基本上一个视频覆盖了另一个视频,然后我希望将其作为输出作为输出,以便稍后可以播放该流. 我不是要您编写整个代码,只需告诉我该怎么做或如何做,或者我必须使用哪种工具或第三方SDK来实现它. 更新: 尝试了很多解决方案. 1. Xuggler - 不支持Android. 2. JavaCV或JJMPEG - 找不到任何建议如何做的教程? 现在寻找ffmpeg-搜索了很长时间,但找不到任何教程,这些教程暗示了编码方式.我找到了如何修复它的命令行. 因此,任何人都可以建议或指向FFMPEG的教程或告诉其他任何方法 解决方案 我将从 javacv .它非常好且灵活.它应该允许
8 2024-02-19
编程技术问答社区
用JavaCV和FFmpeg播放视频
所以,我正在为Android开发一个自定义视频播放器,但我需要播放比Android支持的视频文件(mp4, 3gp...), like wmv, avi, flv. 目前,我确实已经将任何视频类型转换为.mp4,并且可以在重新编码后播放它们,但是我不知道如何播放这些wmv,avi文件而不将它们重新编码为mp4视频格式. 有什么办法可以在不重新编码的情况下在Android上播放任何视频? JavaCV + FFmpeg库已经在工作,只是不知道该怎么做. 顺便说一句,我将使用我用来查看视频的代码: public static void convert(File file) { FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath()); IplImage captured_frame = null; FrameRe
18 2024-02-19
编程技术问答社区
带有javaCv和FFMPEG的Android Studio
所以我正在使用新的Android Studio,并且正在尝试将JavACV安装在最基本的设置中.我做了一个全新的项目,其中没有任何东西,进口(我认为未能成功)JavACV库,然后我正在运行Javacv Repo中给出的一个样本,并且我会收到以下错误. Process: com.example.calvintmoss.dejavid, PID: 1187 java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.calvintmoss.dejavid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.calvintmoss.dejavid-1, /system/lib]]]: fi
32 2024-02-18
编程技术问答社区
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=cvLoadImag
46 2024-02-18
编程技术问答社区
使用Javacv编程的安卓项目出现异常
嗨,我正在使用Javacv开发一个应用程序.该应用程序正常运行,直到我构建为止.进程后,该应用在JNI函数调用位置崩溃. -dontshrink -dontoptimize -dontpreverify -dontwarn android.support.** -keep class com.googlecode.javacv.** -dontwarn com.googlecode.javacv.** -keep class com.googlecode.javacpp.** -dontwarn com.googlecode.javacpp.** -keepclasseswithmembernames class * { native ; } -keepattributes *Annotation* 我找不到解决我问题的任何答案.我得到了nosuchmethoderror.任何人帮助我.我正在使用Javacv库的最新版本. 解决方案
14 2024-02-17
编程技术问答社区
将H264 ByteStream转为图像文件
第一次在这里保持温柔. 我已经在给定的H.264字节流中工作了几个星期: 一般说明: 字节流不是来自文件,它是从外部来源直播给我的. 字节流编码Android的媒体编解码器. 将流写入带有.H264扩展名的文件时,VLC能够正确播放. 我想实现的目标?以下一个: 将H264流的帧转换为可保存的图片文件(png/jpeg等) 将H264 RAW字节转换为可以通过浏览器播放的MP4流. 我尝试使用Javacv(ffmpegframegramgrabber),没有任何成功,我的主要问题是我不知道如何解析字节流或每个"数据包"的意思 所以,我已经连接了一个文本文件,其中一些我从流中获得的数据包 解决方案 将H264流的框架转换为可保存的图片文件(png/jpeg等) 假设您正在使用ffmpeg CLI工具. 单图: ffmpeg -framerate 25 -i input.h264 -frames:v 1 output
14 2024-02-17
编程技术问答社区
JavaCV视频记录器的方向在纵向模式下不正确
嗨,我正在使用 https://github.com/bytedeco/javacv/用于录制视频. 当使用景观模式时,方向很好,但是当我将方向更改为肖像模式时,视频旋转-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.MediaRecord
8 2024-02-13
编程技术问答社区
使用Android的JavaCV的Stitcher中的ExceptionInitializerError
我在Android上使用JavACV使用此代码进行图像缝制: public void ImageStitching() { Stitcher stitcher = Stitcher.createDefault(false); MatVector images = new MatVector(2); images.put(0,cvLoadImage("sample1.png")); images.put(1,cvLoadImage("sample2.png")); IplImage result = new IplImage(null); int status = stitcher.stitch(images,result); if( status == Stitcher.OK ) { cvSaveImage("result.png", result); } } 但是当我执行它时,应用程序
10 2024-02-11
编程技术问答社区
异常初始化错误 javacv
我正在为我的项目使用Javacv, 在我的项目中,我想使用opencv_highui.cvloadimage函数 我在libs文件夹中添加了javacv.jar,javacpp.jar,然后提取所有文件 在libs/armebi-v7a文件夹 中 但是当我运行项目时,它给了我异常错误错误的错误 OPENCV还有其他步骤 请给我一些建议 这是我代码 import static com.googlecode.javacv.cpp.opencv_highgui.*; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {
38 2024-02-11
编程技术问答社区
java.lang.ExceptionInInitializerError in javacv
我正在使用javacv库进行视频录制 http://code.google.com/p/javacv/ 在我的项目中,我需要使用opencv_highui.cvloadimage函数 但是在这条线上,我会遇到错误,例如 11-20 14:58:38.697:d/dalvikvm(7587):在/data/app-lib/com.javacv.recorder-2/libopencv_highgui.so 0x42474478,跳过 11-20 14:58:38.697:w/dalvikvm(7587):例外ljava/lang/unnang/nistisfiedlinkerror;初始化lcom/googlecode/javacv/cpp/opencv_highgui; 时抛出 我能够使用其他opencv_core函数 您可以建议我一些解决方案 谢谢 解决方案 我遇到了相同的问题,并添加了它: import static com.googlecode.
18 2024-02-11
编程技术问答社区
如何将ShortBuffer转换为Buffer[]?
我在Android上使用JavACV,并且正在跟随此样本活动. https://code.google.com/p/javacv/source/browse/samples/recordactivity.java 但是,我遇到麻烦的行是 recorder.record( ShortBuffer.wrap(audioData, 0, bufferReadResult). ); ,但是我会发现该线路的例外,因为它期望一个缓冲区[].但是,阅读到缓冲区和矮子器中,我不确定为什么不接受它. 记录声明() public void record(com.googlecode.javacv.cpp.opencv_core.IplImage image) throws com.googlecode.javacv.FrameRecorder.Exception { /* compiled code */ } public void record(com.googlecode
20 2024-02-11
编程技术问答社区
FFmpeg Javacv-延迟问题
我正在使用Android V21设备将数据传输到Javafx应用程序.它的工作正常,但我的延迟大约有2秒. 截至目前,基本运输就像这样 Android WEBRTC/自定义实施16MS Android Packetizer(UDP)6 MS UDP运输 Windows DepackeTizer没有缓冲区中的数据堆积 Windows ffmpeg Framgrabber Uncown Latency Javafx ImageView 我的数据流到我的桌面,而我的包装仪比帧速率快得多,并且通常只是在等待.在其他任何地方都没有堆积数据,因此我假设我的任何代码都没有延迟. 我通过编写YUV从相机到纹理的YUV来测试我的Android设备,并定时Android设备可以将框架编码为H264,然后再将其发送多长时间.因此16 + 6 = 22ms 我觉得问题在于Javacv ffmpeg framegrabber.我正在研究此API,以了解为什么会发生这种情况.
18 2024-02-10
编程技术问答社区
录制视频的问题
我试图在480*480分辨率中录制视频,例如使用JavACV在Vine中.作为起点,我使用了 htttps://github中. com/bytedeco/javacv/blob/master/samples/record activity.java 视频已被录制(但没有以所需的分辨率)并保存. 但问题是480*480分辨率在Android中不受本地支持.因此,需要进行一些预处理以使视频以所需的分辨率获取. 因此,一旦我能够使用JavACV提供的代码示例录制视频,下一个挑战就是如何预先处理视频.在研究中发现,当所需的最终图像宽度与记录的图像宽度相同时,可以进行有效的裁剪.在SO问题中提供了这样的解决方案,录制视频在使用JavACV的Android上(更新2014 02 17).我更改了该答案中建议的OnPreviewFrame方法. @Override public void onPreviewFrame(byte[] data, Camera came
18 2024-02-09
编程技术问答社区
libopencv_core.so的未满足的链接错误,而.apk持有这个库
我想在Android上使用JavACV. 因此,我在这里遵循建议: https://github.com/bytedeco/javacv 如何安装Android 2.2或更新.结果,可以在 \ libs \ armeabi 下找到以下库: libjniopencv_core.so libopencv_core.so 我.apk的class.dex文件中也存在所有两个库的类. 我仍然得到以下例外: java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_core.so" needed by "libjniopencv_core.so"; caused by load_library(linker.cpp:745): library "libopencv_core.so" not found
16 2024-02-07
编程技术问答社区
如何在Android上将Buffer[]绘制到TextureView上?
我正在使用javacv的FFmpegFrameGrabber返回 Frame 基本上包含一个基本包含一个的 Buffer[] 为视频框架保存图像像素. 由于性能是我的首要任务,因此我想使用OpenGL ES直接显示此Buffer[]而不将其转换为Bitmap. 要显示的视图仅摄入屏幕的一半,然后遵循OpenGL ES 文档: 想要将OpenGL ES图形合并到其一小部分布局中的开发人员应该查看TextureView. 所以我想TextureView是该任务的正确选择.但是,我没有发现很多资源(其中大多数是相机预览示例). 我想问我如何将Buffer[]绘制到TextureView?如果这不是最有效的方法,我愿意尝试您的选择. 更新:,因此我目前已经设置了这样的设置: 在我的VideoActivity中,我反复提取包含ByteBuffer的视频的Frame,然后将其发送到我的MyGLRenderer2以转换为OpenGles的纹理: ...
12 2024-02-07
编程技术问答社区
安卓JavaCV从相机中创建IplImage,与ColorHistogram一起使用
我在Android中使用Javacv. 在我的代码中,我创建了一个ImageComparator(OpenCV cookbook类 http://code.google.comle.comle.comle.com/p/javacv/javacv/wikiki/opencembebe_exex_ex_ex_ex_ex_chaptles_chapters_chapters_chapter> File referenceImageFile = new File(absPath1); // Read an image. IplImage reference = Util.loadOrExit(referenceImageFile,CV_LOAD_IMAGE_COLOR); comparator = new ImageComparator(reference); comparator = new ImageComparator(reference); 但是
16 2024-02-07
编程技术问答社区
FFmpegFrameRecorder视频在3G网络中广播音频比视频帧更快。
我正在使用FFmpegFrameRecorder用于视频广播.问题的音频比视频帧快.我使用以下代码,但无法制作完整的视频,音频视频时间戳中存在问题. Java代码: import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_8U; import java.io.IOException; import java.nio.ShortBuffer; import android.app.Activity; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.Canvas; import android.hardware.Camera; import android.hardware.Camera.PreviewC
30 2024-02-05
编程技术问答社区