我正在使用该库开发纸牌识别游戏。
https://github.com/fvannee/android-cards-image-recognition
一切正常,但问题是,扫描卡时,相机挂得太多。经过调查,我发现此功能引起了问题。
@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