gpt4 book ai didi

Java openCV - 将位图转换为 Mat 时出错

转载 作者:行者123 更新时间:2023-12-02 00:27:41 25 4
gpt4 key购买 nike

我正在使用 Java openCV,我尝试加载一张照片并对其运行模板匹配。模板匹配方法处理的是Mat对象,所以我需要加载图像并将它们转换为Mat。

我的做法是:

Bitmap i = BitmapFactory.decodeFile("/sdcard/TVguide/Detection/detected.jpg");
image = Utils.bitmapToMat(i);

这样,我从 Android SD 卡加载照片,并尝试使用 openCV 方法 bitmapToMat 将其转换为 Mat 对象。问题是在转换时,应用程序崩溃了。

这是 LogCat:

            03-14 15:15:57.636: W/dalvikvm(1059): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/opencv/android/Utils;
03-14 15:15:57.636: D/AndroidRuntime(1059): Shutting down VM
03-14 15:15:57.636: W/dalvikvm(1059): threadid=1: thread exiting with uncaught exception (group=0x40015578)
03-14 15:15:57.640: E/AndroidRuntime(1059): FATAL EXCEPTION: main
03-14 15:15:57.640: E/AndroidRuntime(1059): java.lang.ExceptionInInitializerError
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.marakana.Preview$3.onPictureTaken(Preview.java:191)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:565)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.os.Handler.dispatchMessage(Handler.java:99)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.os.Looper.loop(Looper.java:123)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.reflect.Method.invokeNative(Native Method)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.reflect.Method.invoke(Method.java:507)
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
03-14 15:15:57.640: E/AndroidRuntime(1059): at dalvik.system.NativeStart.main(Native Method)
03-14 15:15:57.640: E/AndroidRuntime(1059): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_java: findLibrary returned null
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.Runtime.loadLibrary(Runtime.java:429)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.System.loadLibrary(System.java:554)
03-14 15:15:57.640: E/AndroidRuntime(1059): at org.opencv.android.Utils.<clinit>(Utils.java:86)
03-14 15:15:57.640: E/AndroidRuntime(1059): ... 10 more
03-14 15:16:03.472: I/Process(1059): Sending signal. PID: 1059 SIG: 9

我不明白我是否做错了什么,或者它只是一个有缺陷的 openCV。

谢谢埃亚尔

最佳答案

您需要将位图转换为 RGBA 格式:

Bitmap bmp32 = i.copy(Bitmap.Config.ARGB_8888, true);

实际上这是Android-OpenCV用户组讨论最多的问题:https://groups.google.com/group/android-opencv/

该问题的修复已在 OpenCV 主干中提供,并将包含在 OpenCV 的下一版本中。

您还可以使用 OpenCV API 读取图像:

Mat image = Highgui.imread("/sdcard/TVguide/Detection/detected.jpg");

关于Java openCV - 将位图转换为 Mat 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684869/

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