我使用的是Android Studio 2.3版本
我用Android的Opencv 3.2和我的手机的android版本是4.4.2
这是我的一些源代码。
请注意案例VIEW_MODE_CANNY
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
final int viewMode = mViewMode;
switch(viewMode){
case VIEW_MODE_RGBA:
mRgba = inputFrame.rgba();
break;
case VIEW_MODE_GRAY:
Imgproc.cvtColor(inputFrame.gray(), mRgba, Imgproc.COLOR_GRAY2RGBA, 4);
break;
case VIEW_MODE_CANNY:
try{
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY);
Imgproc.GaussianBlur(mGray, mGray, new Size(5, 5), 2, 2);
Imgproc.Canny(mGray, mIntermediateMat, 35, 75);
Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2BGRA, 4);
}catch(Exception e){
Log.i(TAG,e.toString());
e.printStackTrace();
}
break;
}
return mRgba;
}
我的应用程序显示3个不同的视图。灰色,颜色和Canny
灰色和颜色运行良好。
但如果我选择canny它会自动终止。
没有记录,也没有异常
我甚至无法猜到为什么不
请给我提示..
答案 0 :(得分:0)
我认为错误就在这一行:
Imgproc.cvtColor(inputFrame.rgba(), mGray, Imgproc.COLOR_RGBA2GRAY);
应该是:
REFERENCES
崩溃是因为你给cvtColor提供了一个未初始化的输入图像。
顺便说一句,你的VIEW_MODE有点令人困惑:它不清楚它是指你得到的输入类型,还是你想要生成的输出类型。