Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV Android crashes on Imgproc.cvtColor()

I have a problem with OpenCV4Android.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.camtime/com.fognature.develop.smp.CameraActivity}: CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp:3739: error: (-215) scn == 3 || scn == 4 in function void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2320) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2380) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp:3739: error: (-215) scn == 3 || scn == 4 in function void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ] at org.opencv.imgproc.Imgproc.cvtColor_1(Native Method) at org.opencv.imgproc.Imgproc.cvtColor(Imgproc.java:4598) at com.fognature.develop.smp.CameraActivity.onCreate(CameraActivity.java:108) at android.app.Activity.performCreate(Activity.java:6018) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2273) ... 10 more

On this code part:

Mat sec;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sec = new Mat();
        setContentView(R.layout.activity_camera);
    File photo = new File(Environment.getExternalStorageState()


+File.separator+"SMP"+File.separator+getIntent().getStringExtra("c_name")+File.separator+getIntent().getStringExtra("last_photo"));
                sec = Highgui.imread(photo.getAbsolutePath());
                Imgproc.cvtColor(sec, sec, Imgproc.COLOR_RGBA2GRAY);
        }

It always crash on Imgproc.cvtColor(sec, sec, Imgproc.COLOR_RGBA2GRAY);

like image 551
FogNature Avatar asked Dec 07 '25 14:12

FogNature


1 Answers

The error states that :

error: (-215) scn == 3 || scn == 4 in function void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ]

which generally means that:

  • When you are trying to convert RGBA2GRAY, then the input Mat sec in this case has Only 1 channel. You can confirm this by logging the sec.channels() just after reading it.
  • It is also possible that, input Mat was empty or corrupted, to confirm you may check sec.width, sec.height, sec.depth, etc attributes to assure that it was loaded properly.
like image 94
ZdaR Avatar answered Dec 10 '25 02:12

ZdaR



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!