Imgproc.adaptiveThreshold减慢进程

时间:2019-03-06 12:07:49

标签: java android opencv

我正在使用该库开发纸牌识别游戏。

https://github.com/fvannee/android-cards-image-recognition

Demo image

一切正常,但问题是,扫描卡时,相机挂得太多。经过调查,我发现此功能引起了问题。

@Override
public Mat onCameraFrame(CameraBridgeViewBase2.CvCameraViewFrame inputFrame) {
    rgba = inputFrame.rgba();

    if (isScanning && dealRetriever.getDeal().getHand(currentPos).getCards().size() < 32)
    {
        Core.transform(rgba, gray, coefficients);

        /***This line is causing problem***/

        Imgproc.adaptiveThreshold(gray, bw, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 101, 35);

        /***This line is causing problem***/

        cards = detector.detectCardsInImage(bw, rgba);
        cards_set = CardDetector.CardsToSet(cards);
        getActivity().runOnUiThread(new Runnable() {
            public void run() {
                if(dealUpdater !=null && currentPos !=null && cards_set!=null){
                    dealUpdater.addCardsToHand(currentPos, cards_set);
                }


            }
        });
    }
    return rgba;
}

如代码中所述,Imgproc.adaptiveThreshold函数导致挂起,因为如果我注释该行,则摄像头预览将流畅运行。但是,对于卡检测至关重要。请建议我该功能有什么问题以及如何改进。我还看到了与此功能相关的不同文档,并尝试了不同的值,但没有任何效果。

这是帮助链接:https://www.tutorialspoint.com/opencv/opencv_adaptive_threshold.htm

0 个答案:

没有答案