需求
公司最近又有了一项新的需求:定位一张截图里面的棋盘区域,并识别其中的黑白子数目。类似于下面这张图:
隐智围棋.jpg
一说图片识别,立马想到了大名鼎鼎的opencv,正好趁此机会学习一波,前后折腾了三四天,总算初步入门,运用内置的一些基础算法实现了上述需求,在此整理记录一下。
下载
官网地址:https://opencv.org/releases.html,选择android pack。
下载解压后目录如下:
导入Android Studio
- 打开Android Studio新建项目
- 通过Import Module导入sdk目录下的java文件夹,修改该module下的build.gradle文件,配置同主module下的build.gradle文件,比如:
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 26
}
-
在主module的/src/main目录下新建jniLibs文件夹,将刚才下载的sdk/native/libs下的文件拷贝到jniLibs下,具体拷哪个根据自己的系统架构来定,也可以都拷,不过最后apk文件会很大。
jniLibs.png -
主module依赖opencv module
dependencies {
//。。。
implementation project(':openCVLibrary341')
// 。。。
}
测试
在MainActivity的onCreate方法中调用下面的初始化方法:
private void staticLoadCVLibraries() {
boolean load = OpenCVLoader.initDebug();
if (load) {
Log.i("MainActivity", "Open CV Libraries loaded...");
} else {
Log.i("MainActivity", "Open CV Libraries not loaded...");
}
}
运行app,观察日志:
06-06 07:14:43.580 13503-13503/com.lxf.ndkdemo I/MainActivity: Open CV Libraries loaded...
网友评论