用camera2 api android和opencvcamera2进行并行处理
我正在开发一个应用程序,我想从相机中处理每个帧并在其上应用一些图像处理算法.我正在从Imimageavailable可回调的ImagerAder中获得图像feed,并将其传递给我的CPP代码,并使用JNI接口进行进一步处理.这可以正常工作,直到我在CPP代码内执行重型操作为止,之后它开始为相机预览增加延迟和滞后.是否可以并行处理饲料图像,以便我获得实时结果?我已经在使用其他线程进行摄影. 解决方案 增加成像顾问的最大计数,以便您可以同时处理多个图像.但是最后,您的吞吐量必须为30fps,以免放慢预览.仅当(称)需要100毫秒才能进行处理时,并行处理有助于您进行处理,但是您可以并排运行3个处理线程(因此,帧每33毫秒完成一次). 另外,如果无法跟上,则可以跳过处理框架;只需检查您的处理是否仍在进行中,如果是,请立即释放图像.当然,如果您唯一的输出是处理的框架,那将无济于事.
不同版本的OpenCV使用什么版本的libpng?
在我的应用程序中,我正在阅读.png图像并进行一些处理.带有OpenCV 2.4.9和OpenCV 3.0.0的输出(均用于Windows).潜在的错误可能是什么.在两个版本中,libpng是否有任何差异. 也有可能在windows和openCV中使用libs(例如libpng)或libs的版本在同一版本中(例如2.4.9或3.0.0). 解决方案 在两个版本中,libpng有任何差异. 您可以使用cv::getBuildInformation()进行检查(请参阅 也有可能在windows和openCV中使用libs(例如libpng)或libs的版本在同一版本中(例如2.4.9或3.0.0). 是的,当然. OpenCV动态链接到LIBPNG.构建甚至可以使用系统libpng(例如在Linux发行版)而不是捆绑的libpng.
4 2023-05-10
编程技术问答社区
在openCV 3.2-Android中无法创建DescriptorMatcher
我正在运行Android中的以下OPENCV代码: FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB); DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING); 它在OpenCV 2.4.1中正常工作 在OpenCV 3.2中,我得到以下例外: java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.features2d.DescriptorMatcher.create_1(int) (trie
0 2023-05-10
编程技术问答社区
安卓系统中的Opencv ANN_MLP训练
我已经在OpenCV C ++中实现了ANN字符分类器.我创建了一个模型: cv::Mat layers(3,1,CV_32S); layers.at(0,0) = ATTRIBUTES;//400 layers.at(1,0)=25;//hidden layer layers.at(2,0) =CLASSES;// eg. 10 CvANN_MLP nnetwork(layers, CvANN_MLP::SIGMOID_SYM,0.6,1); CvANN_MLP_TrainParams params( cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, 0.000001), CvANN_MLP_
4 2023-05-10
编程技术问答社区
由于相机预览而产生的OutOfMemoryError
我设法使用OpenCV打开了Android摄像头.但是,当我使用修复摄像机方向的代码时 - "请参阅oncameraframe(..)方法中提到的代码" - 几秒钟后,应用程序崩溃了,logcat 在" logcat部分"中生成belwo发布的消息. 解决此问题: 我尝试使用SystemClock.sleep将应用程序迫使应用程序持续一段时间,但这不是一个好的解决方案,因为它会延迟相机预览 我尝试尽可能地最小化帧大小,因此我使用mopencvcameraview.setmaxframeize(320,240)将其设置为320x240,"代码部分中提到了belwo".但是该解决方案设法使摄像机预览更长几分钟,但最终也崩溃了. 请告诉我,对于这种情况,正确的解决方案是什么? logcat : 10-07 14:42:43.445 30510-31656/com.example.bak.opencvcamera_00 E/cv::error(): OpenC
0 2023-05-10
编程技术问答社区
没有找到void org.opencv.core.Core.rotate_0的实现。
我构建了由在这里必须在opencvlib中完成 this 在mavenlocal中. 然后,我将其发布为Mavenlocal,但我没有将Libs放入我的应用程序夹中,因为我已经有mavenlocal. 我尝试将位图转换为垫子而没有问题. ,但我不能旋转垫子. public Bitmap rotateMat(Bitmap bitmap, int i){ Mat mat = helper.bitmapToMat(bitmap); switch (i) { case 1: Core.rotate(mat, mat, 0); break; case 2: Core.rotate(mat, mat, 2); break; case 3:
2 2023-05-10
编程技术问答社区
OpenCv Core.line在预期有颜色时画成白色
在OpenCv4Android环境中,当我创建Mat图像并使用Core.line()绘制图像时,它总是显示白色而不是我指定的颜色. 我已经看过与灰度有关的问题,但是我尚未转换为灰色的图像. public class DrawingTest extends AppCompatActivity { public static final Scalar GREEN = new Scalar(0,255,0); private RelativeLayout mLayout; private ImageView imageView; static { System.loadLibrary("opencv_java"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst
0 2023-05-10
编程技术问答社区
在Android Studio中设置NDK和OpenCV
我将模块" opencv for Android"导入Android Studio,并尝试在Java代码中实现我的图像处理功能. core.multiply和core.Add等大多数OPENCV方法都可以正常工作,但是,我发现某些OPENCV方法(例如Mat.put()和Mat.get()和Mat.get()的效率不太有效,并且程序运行速度很慢.在我的设备中. 所以,我的问题是 如果我在Android Studio中设置了NDK,这会使我的程序运行速度更快吗? (我认为如果我在C ++中使用指针,该程序将更有效,我不确定这是否正确) 我以这种方式使用opencv方法mat.get()和mat.put(), Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.testPhoto); Mat m1 = new Mat(bitmap.getHei
0 2023-05-10
编程技术问答社区
无法在Qt内部链接OpenCV Android
我尝试将OPENCV与QT内的Android一起使用,但是我无法成功将其链接在QT中,我会在侧库中获得一些未定义的参考错误(例如libjpeg,libtegra_hal等).我使用这样的答案作为参考指南. 这是我的.pro文件 - INCLUDEPATH += "$$PWD/../../External-Libraries/opencv-android/sdk/native/jni/include" android { # 3rd party libs LIBS += \ -L"$$PWD/../../External-Libraries/opencv-android/sdk/native/3rdparty/libs/armeabi-v7a"\ -llibtiff\ -llibjpeg\ -llibjasper\ -llibpng\ -llibwebp\ -lIlmImf\ -ltbb\ -ltegra
0 2023-05-10
编程技术问答社区
如何在安卓系统上将相机拍摄的新图片作为OpenCV Mat来检索?
我试图用Android设备拍照.必须将图片转换为垫子,以作为我喜欢在API中提供结果的计算的输入. Android在哪种格式中提供了回调中的字节[]数据,以及如何将其转换为color-Format BGR中的OpenCV垫? 第一个问题:"如何在没有表面视图的情况下拍摄图片".我使用了surfaceTexture,这一定不可见. mCamera = Camera.open(); mCamera.setPreviewTexture(new SurfaceTexture(10)); 所以我能够启动预览并拍照.但是字节[]数据是哪种格式,以及如何将其转换为OpenCV BGR垫? mCamera.startPreview(); mCamera.takePicture(null, null, null, new PictureCallback() { @Override public void onPictureTake
2 2023-05-10
编程技术问答社区
在OpenCV摄像机预览中不显示面罩
我想制作一个简单的android应用 i将C ++转换为我的应用程序的Java.面膜大小进行了很好的调整和白色部分(我在预览中的ImageView中显示了用于测试的结果),但是掩码永远不会出现在检测到的脸部green Rectangle上: 结果的屏幕截图 我的代码: public Mat onCameraFrame(CvCameraViewFrame inputFrame) { [...] for( int i = 0; i
2 2023-05-10
编程技术问答社区
安卓应用在加载外部库时退出
我正在尝试将opencv4添加到我的Android应用6B02BC2920C0" rel =" nofollow noreferrer"> this post. 我在下面的kotlin文件的开始中添加了System.loadLibrary: class MainActivity : AppCompatActivity() { companion object { init { System.loadLibrary("opencv_java4") } } override fun onCreate(savedInstanceState: Bundle?) { } 但是,启动以下应用程序退出: 09/22 16:08:04: Launching 'app' on Pixel 3a API 29. $ adb shell am start -n "hasan.tts_mobile/hasan
0 2023-05-10
编程技术问答社区
从相机预览中的触摸事件中检索准确的RGB值
我一直在开发一个Android应用程序,该应用只需要在相机预览中检索并显示触摸事件的坐标和RGB值即可.我是这种编程语言的初学者,我只是想尝试一下,但是该应用程序在触摸事件中一直在崩溃.这是我在Android中尝试的代码: /* When copying this code set Permissions: CAMERA * Do this by adding to AndroidManifest.xml: * */ import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Color; import android.hardware.Camera; import
0 2023-05-10
编程技术问答社区
如何在java中找到最大的等值线 opencv
我已经使用了查找轮廓和界面,并在我的项目中显示.然后,我想找到最大的轮廓并显示.这可能吗?我是opencv java lang的新手. 到目前为止,我的代码是我的代码: @Override public void onCameraViewStarted(int width, int height) { mRgba = new Mat(height, width, CvType.CV_8UC4); mHsv = new Mat(height,width,CvType.CV_8UC3); hierarchy = new Mat(); mHsvMask = new Mat(); mDilated = new Mat(); mEroded = new Mat(); } @Override public void onCameraViewStopped() { mRgba.release(); mHsv.release(
0 2023-05-10
编程技术问答社区
获取实时相机的RGB值,错误NullPointerException
[UPDATE]:屏幕快照已添加. 我正在遵循基本教程tutorial-1-camerapreview来自 opencv-3.4.1 and and android-sdk_4 . 我想单击屏幕并获得该x y位置的RGB颜色. 我从这里(从相机预览中从触摸事件中检索精确的RGB值): 获得X y坐标: @SuppressWarnings("deprecation") @Override public boolean onTouchEvent(MotionEvent event) { x = (int)event.getX(); y = (int)event.getY(); return super.onTouchEvent(event); } oncameraframe as: public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
2 2023-05-10
编程技术问答社区
android.hardware.camera2.CaptureRequest可以与OpenCV一起使用吗?
我已经工作了几天.我有一个基于OPENCV/JAVACAMERAVIEW的项目,我正在尝试与我使用的Android android.hardware.camera2.CaptureRequest对象集成,以控制相机对光的敏感性. CameraBridgeViewBase.CvCameraViewListener2/JavaCameraView项目工作(我可以在屏幕上看到一个图像),并且CaptureRequest项目工作(也请参见此),但是将两种技术组合在一个项目中已证明是一个很大的问题. 是否有人掌握了这两种技术来共同努力?我的目标是将摄像机控制在CaptureReQuest的控制下(有限的Sensor_sensitivity + Sensor_exposus_time),但要使屏幕显示通过我编写的OpenCV共享库过滤的流映像. 要控制相机,我可以使用类似的东西: mCameraDevice.createCaptureSession(Array
4 2023-05-09
编程技术问答社区
如何使用OpenCV从图像中检测(计数)头发?
我尝试使用OpenCV函数的代码以下尝试cvtColor,Canny和HoughLinesP,但在某些情况下无法获得准确的结果或不工作. private boolean opencvProcessCount(Uri picFileUri) { hairCount = 0; totalC = 0; //Log.e(">>>>>>>>","count " + picFileUri); try { InputStream iStream = getContentResolver().openInputStream(picFileUri); byte[] im = getBytes(iStream); BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inDither = true; opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
6 2023-05-09
编程技术问答社区
错误:软件包android.hardware.camera2不存在 OpenCV
我正在尝试将OpenCV模块添加到项目中,但是我无法解决一些Gradle问题.这是我的app.gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 17 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.sveder.cardboardpassthrough" minSdkVersion 8 targetSdkVersion 21 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'progu
4 2023-05-09
编程技术问答社区
试图用opencv检测图像中的蓝色,得到了意外的结果
我是OpenCV4Android的新手.这是我写的一些代码,以检测图像中的蓝色斑点.在以下图像中,图像1在我的笔记本电脑中.我运行了应用程序和OpenCV摄像机捕获的框架是图像2.您可以查看代码以查看其余图像是什么. (如您在代码中看到的,所有图像都保存在SD卡中.) 我有以下问题:. 为什么在相机捕获的RGBA框架中变成浅蓝色斑点的颜色(如图2所示). 我在最大的蓝色斑点周围创建了一个boundingRect,然后通过执行rgbaFrame.submat(detectedBlobRoi).但是您可以在最后一个图像中看到,它看起来像几个灰色像素. 我期望蓝色球与图像的其余部分分开. 我想念什么或做错了什么? 代码: private void detectColoredBlob () { Highgui.imwrite("/mnt/sdcard/DCIM/rgbaFrame.jpg", rgbaFrame);//check
0 2023-05-09
编程技术问答社区
Android中未定义的对'cv::initModule_nonfree()'的引用
我想创建一个使用本机中BOW+SVM(使用C ++)进行预测的Android应用程序.不幸的是,我在建立本地部分方面有问题.由于Android的OpenCV SDK中不包含非免费模块,因此我需要自己构建模块,并使用这个教程/a>.看来我成功地构建了.so文件.这是输出: [armeabi-v7a] Prebuilt : libopencv_java.so libs/armeabi-v7a/libnonfree.so [armeabi-v7a] Install : libopencv_ja
2 2023-05-09
编程技术问答社区