以下是我的代码:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat input_image = inputFrame.rgba();
Mat output_image = new Mat(input_image.size(), CvType.CV_8UC1);
Mat output_image2 = new Mat(input_image.size(), CvType.CV_8UC4);
Mat output_image3 = new Mat(input_image.size(), CvType.CV_8UC4);
Imgproc.Canny(input_image, output_image, 100, 200);
Imgproc.cvtColor(output_image, output_image2, Imgproc.COLOR_GRAY2BGRA, 4);
bitwise_or(input_image, output_image2, output_image3);
return output_image3;
}
我的应用程序在运行一段时间后(约2分钟)总是崩溃。但是,如果我注释掉cvtColor line& bitwise_or line并返回output_image,然后它就可以了。
我正在使用cvtColor来增加频道数量,但是因为我的应用程序正在崩溃。为什么会这样?有没有其他方法可以增加频道数量?
我是OpenCV以及Android开发的新手,所以我不太了解。请帮忙。提前谢谢。
编辑:
不知何故,这段代码正在运行(不确定原因),但它没有做任何事情(没有边缘检测):
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
Mat mIntermediateMat = new Mat();
Imgproc.Canny(rgba, mIntermediateMat, 80, 90);
Imgproc.cvtColor(mIntermediateMat, rgba, Imgproc.COLOR_GRAY2BGRA, 4);
bitwise_or(inputFrame.rgba(), rgba, rgba);
return rgba;
}