0

下面是我的代码:

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 行和 bitwise_or 行并返回 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;
}
4

0 回答 0