繁体   English   中英

不幸的是,Canny Edge Detection(Android OpenCV)应用程序停止了

[英]Canny Edge Detection (Android OpenCV) app unfortunately stops

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.Canny_Edge) //Unfortunately stops the app when we use this option    {
        ImageView i = (ImageView) findViewById(R.id.image_view);

        Bitmap bmp =BitmapFactory.decodeResource(getResources(),R.drawable.smiley);
        Mat srcMat = new Mat ( bmp.getHeight(), bmp.getWidth(), CvType.CV_8UC3);

        Bitmap myBitmap32 = bmp.copy(Bitmap.Config.ARGB_8888, true);

        Utils.bitmapToMat(myBitmap32, srcMat);

        Mat gray = new Mat(srcMat.size(), CvType.CV_8UC1);
        Imgproc.cvtColor(srcMat, gray, Imgproc.COLOR_RGB2GRAY,4);
        Mat edge = new Mat();
        Mat dst = new Mat();
        Imgproc.Canny(gray, edge, 80, 90);
        Imgproc.cvtColor(edge, dst, Imgproc.COLOR_GRAY2RGBA,4);
        Bitmap resultBitmap = Bitmap.createBitmap(dst.cols(), dst.rows(),Bitmap.Config.ARGB_8888);
        Utils.matToBitmap(dst, resultBitmap);

        i.setImageBitmap(resultBitmap);
    }
    else if(id == R.id.Sobel) {
        ImageView i = (ImageView) findViewById(R.id.image_view);
        i.setImageResource(R.drawable.apj);
           //some code
    }

    return super.onOptionsItemSelected(item);
}

在上面的代码中, Android studio没有显示任何错误 但是不幸的是,应用程序停止获取此Canny_Edge 选项 (在菜单中)。 为什么,谁能解决这个问题。

我已经在以下网址回答了类似的问题: https : //stackoverflow.com/a/50637228/1693327,但由于缺乏声誉,我无法对此帖子发表评论,因此我将在下面复制答案。

设备执行Imgproc.Canny函数调用时应该崩溃。

我认为该应用程序碰到Canny检测器时会崩溃,原因是设备上安装的OpenCV Manager类型错误,无论是版本号还是中央处理器指令集。 检查正确的版本应该很简单。 只需转到OpenCV-android-sdk \\ apk目录并在OpenCV_之后检查3个(xyz)数字

检查适用于Windows的Android设备的指令集

要检查设备的指令集,请导航至通常位于以下位置的adb(Android调试桥)目录:

C:\\ Users \\ <'您的用户名'> \\ AppData \\ Local \\ Android \\ Sdk \\ platform-tools运行命令:

./adb.exe shell cat /proc/cpuinfo

获取正确的指令集后,导航回到OpenCV-android-sdk \\ apk并找到要在您的android设备上安装的正确apk版本和指令集。

然后,您可以将apk传输到您的设备并进行安装。 我发现有用的另一种方法是导航到adb.exe目录并运行命令:

./adb.exe install <path to OpenCV-android-sdk>/apk/OpenCV_x.y.z_Manager_x.yz_<platform instruction set>.apk

除了上述步骤外,请确保没有使用其他类型的OpenCV Manager的其他环境变量,例如在Application.mk或build.gradle文件中声明其他变量。

完成上述步骤后,您的Canny检测器应能够在设备上运行而不会崩溃。

愉快的发展:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM