本书源码 第1章 OpenCV开发环境搭建 1 1.1 OpenCV简介 1 1.2 OpenCV的主要模块 1 1.3 OpenCV开发环境搭建 2 1.3.1 Java开发环境搭建 2 1.3.2 OpenCV的下载和安装 3 1.3.3 OpenCV的配置 3 1.3.4 测试程序 7 第2章 魔方图案识别 10 2.1 概述 10 2.1.1 案例描述 10 2.1.2 案例分析 12 2.2 总体设计 13 2.2.1 系统需求 13 2.2.2 总体思路及流程 13 2.3 魔方图案识别的实现 13 2.3.1 Canny边缘检测 14 2.3.2 霍夫线检测 15 2.3.3 确定顶点 16 2.3.4 透视变换 18 2.3.5 颜色识别 20 2.3.6 颜色值分类 21 2.3.7 颜色匹配 22 2.4 完整代码 22 第3章 答题卡评分 30 3.1 概述 30 3.1.1 案例描述 30 3.1.2 案例分析 31 3.2 总体设计 33 3.2.1 系统需求 33 3.2.2 总体思路及流程 33 3.3 答题卡自动评分的实现 33 3.3.1 二值化 33 3.3.2 提取轮廓 35 3.3.3 汉字过滤 38 3.3.4 定位块位置 38 3.3.5 透视变换 39 3.3.6 答案的判断 39 3.4 完整代码 40 第4章 围棋盘面识别 51 4.1 概述 51 4.1.1 案例描述 51 4.1.2 案例分析 52 4.2 总体设计 53 4.2.1 系统需求 53 4.2.2 总体思路及流程 53 4.3 围棋盘面识别的实现 54 4.3.1 查找线段 54 4.3.2 圆心坐标 54 4.3.3 边界判定 56 4.3.4 边界验证 56 4.3.5 黑子、白子还是无子 57 4.4 完整代码 58 第5章 停车场车位检测 66 5.1 概述 66 5.1.1 案例描述 66 5.1.2 案例分析 66 5.2 总体设计 67 5.2.1 系统需求 67 5.2.2 总体思路及流程 68 5.3 停车位车位检测的实现 68 5.3.1 Canny边缘检测 68 5.3.2 模板匹配 69 5.3.3 过滤及验证 69 5.3.4 颜色识别 69 5.3.5 车位检测 70 5.4 完整代码 70 第6章 车道线检测 76 6.1 概述 76 6.1.1 案例描述 76 6.1.2 案例分析 76 6.2 总体设计 77 6.2.1 系统需求 77 6.2.2 总体思路及流程 77 6.3 车道线检测的实现 78 6.3.1 读取视频 78 6.3.2 白色像素 79 6.3.3 限定范围 80 6.3.4 延伸部分 80 6.3.5 标记车道线 81 6.4 完整代码 84 第7章 汉字识别 89 7.1 概述 89 7.2 汉字结构 89 7.3 案例描述 91 7.4 汉字识别的实现 92 7.4.1 二值化 92 7.4.2 连通域 92 7.4.3 端点的识别 92 7.4.4 笔画识别 94 7.4.5 交叉点识别 96 7.4.6 汉字编码 98 7.5 完整代码 98 第8章 OCR文字识别 115 8.1 Tess4J的安装与配置 115 8.1.1 Tess4J的安装 115 8.1.2 Eclipse中的配置 116 8.2 英文识别测试 120 8.3 安装语言包 121 8.4 中文识别测试 123 8.5 训练语言库 124 第9章 车牌定位与识别 126 9.1 概述 126 9.2 案例描述 127 9.3 案例分析 127 9.4 总体设计 128 9.4.1 系统需求 128 9.4.2 总体思路及流程 128 9.5 车牌识别的实现 128 9.5.1 颜色判断 128 9.5.2 蓝色标记 128 9.5.3 去除多余轮廓线 129 9.5.4 一体化 130 9.5.5 车牌的定位 130 9.5.6 透视变换 131 9.5.7 车牌判断 131 9.5.8 字符分割 132 9.5.9 单个字符的识别 132 9.6 完整代码 133 第10章 硬币识别 142 10.1 概述 142 10.1.1 案例描述 143 10.1.2 案例分析 144 10.2 总体设计 145 10.2.1 系统需求 145 10.2.2 总体思路及流程 145 10.3 硬币识别的实现 146 10.3.1 边缘检测 146 10.3.2 测距线 146 10.3.3 闭运算 146 10.3.4 硬币外框 147 10.3.5 硬币直径 148 10.3.6 边缘处理 148 10.3.7 最小外接圆 149 10.3.8 正反面判断 149 10.3.9 旋转测试 150 10.3.10 面额判断 151 10.4 完整代码 152 第11章 零件检测 163 11.1 概述 163 11.1.1 案例描述 163 11.1.2 案例分析 164 11.2 总体设计 165 11.2.1 系统需求 165 11.2.2 总体思路及流程 165 11.3 零件安装检测的实现 165 11.3.1 Canny边缘检测 165 11.3.2 霍夫圆检测 166 11.3.3 圆孔的定位 167 11.3.4 透视变换 168 11.3.5 颜色检测 169 11.3.6 芯片检测 169 11.4 完整代码 169 第12章 银行卡卡号识别 178 12.1 概述 178 12.1.1 案例描述 178 12.1.2 案例分析 178 12.2 总体设计 179 12.2.1 系统需求 179 12.2.2 总体思路及流程 179 12.3 银行卡卡号识别的实现 180 12.3.1 边缘检测 180 12.3.2 闭运算 180 12.3.3 最小外接矩形 180 12.3.4 卡号区域 181 12.3.5 顶点位置 181 12.3.6 透视变换 182 12.3.7 二值化 182 12.3.8 数字识别 182 12.4 完整代码 182 第13章 全景拼接 190 13.1 概述 190 13.2 全景拼接的原理 191 13.3 全景拼接的实现 192 13.3.1 特征点检测 192 13.3.2 特征点匹配 192 13.3.3 单应矩阵 193 13.3.4 透视变换 194 13.3.5 拼接 194 13.3.6 裁剪 196 13.4 完整代码 196 第14章 二维码识别 201 14.1 二维码简介 201 14.2 OpenCV中的二维码函数 201 14.3 二维码识别案例 202 第15章 机器学习 205 15.1 Deeplearning4J简介 205 15.2 手写数字识别 206 15.2.1 概述 206 15.2.2 K-近邻算法简介 207 15.2.3 手写数字识别的实现 208 15.2.4 完整代码 209 附录A OpenCV常用函数表 213 附录B 一种简单易学、无须记忆的汉字编码法 219 B.1 简介 219 B.2 基本概念 219 B.3 字根 220 B.4 汉字字根规则 221 B.5 编码规则 222 B.6 拼音模式和笔画模式 223 B.7 编码样例 223 IV V