小工具知识网

当前位置: 首页 > 行业知识 > 燕山大学数据结构与算法课程实践——ISBN号识别系统的设计与开发

行业知识

燕山大学数据结构与算法课程实践——ISBN号识别系统的设计与开发

2026-11-11 22:21:52 来源:互联网转载

项目背景

��       ISBN 号是国际标准书号的简称,它是国际标准化组织于 1972 年公布的一项国际通用的出版物统一编号方法。所有正规出版的普通图书版权页都有 ISBN 号, ISBN 是 international standard of book number 几个英文字母的缩写,即国际标准书号。这个号码印刷在每本图书封底( 或护封 ) 的右下角,由一组用四个分割线“-”隔开的 13 个数字。例如: ISBN 978-7-111-47818-8 。其中, ISBN987 代表是中国, 7 代表分类, 111代表出版社编号,47818 代表本书在出版社所有出版书中的编号, 9 是校验码,即:用 1 分别乘 ISBN 的前12 位中的奇数位,用 3 乘以偶数位,乘积之和以 10 为模,用 10 减去此模,即可得到校验位的值,其值范围为 0-9 。例如: S=9*1+7*3+8*1+7*3+1*1+1*3+1*1+4*3+7*1+8*3+1*1+8*3=132 , 132%10=2 , 10-2=8 , 因此校验码即为 8 。在该码的下方有一个条形码,条形码的下方写着 13 个数字,与 ISBN 后面的数字是相同的。

任务:开发一套ISBN号识别系统

        给定 100 张包含 ISBN 号的图片,建议在 VS + OpenCV 环境下完成对给定的 ISBN 图像的识别, 每幅图像的文件名为图中的 ISBN ,例如 ISBN978-7-111-47818-8.jpg. 你可以自由参考现有的文献中的方法,从设计的原理、技术方案到程序实现,给出你能识别出的ISBN 的正确率和准确率。例如:如果有 100 幅图片,你能识别出 90 幅,那么你的系统识别的正确率是 90% ;每一张照片有 13 个需要识别的数字, 100 张照片共有 1300 个需要识别的数字,你的系统识别出了 1000 个,那识别系统的准确率是 1000/1300=76.92% 。

采用的研究方法及相关工具

        本项目使用vs2019和OpenCV4开发,在对其进行图像的转正,然后灰度值转化,对图像进行去噪处理,再进行图像二值化的转化,对图书ISBN编号进行垂直方向数字分割,切割后的每个字符图片与模板进行匹配,实现对ISBN的快速识别。最后,计算出识别出的ISBN相应的正确率和准确率。

项目的方案设计

        通过图像预处理读入图像,对其进行灰度值转化和二值化,将二值化图片进行倾斜校正,校正之后寻找到ISBN号所在区域,对源图片进行分割获得彩色ISBN号,再将其转换为二值图像,寻找ISBN号字符的边界后截取每个字符,截取后的字符通过调整最后与模板进行对比,差值最小的模板号即为读取的ISBN 号,与正确的ISBN号比较得到项目的正确率和准确率。

核心代码的实现

图像预处理:读入图片、转化为灰度图和二值图

1.int rightNums = 0, acNums = 0, sumNums=0; //1:正确的个数;  2:正确的字符个数  3:总共的字符个数  2.  3.    string path1 = "C:/Users/Administrator/Desktop/二级项目/ISBN/ISBN测试数据--100幅图"; //文件路径  4.  5.    vector imgPaths;  6.    glob(path1, imgPaths, false); //1:文件路径  2:输出数组  3:递归遍历所有图片  7.    int imgNums = imgPaths.size(); //图片总个数  8.  9.    for (int i = 0; i 

上一篇:揭秘全民K歌源文件打开秘籍!

下一篇:轻松下载糯米教程,一键搞定,轻松上手!