又有一个多月的时间了呢 = =
刚想起来还欠着一篇文章没写,趁着没忘干净赶紧补上
先上样卡(A4,扫描图片为600dpi)
整体并不是很复杂,但一口气手工切40+张也是够累,所以想办法自己写了个识别程序
opencv是个功能丰富的开源库,这里主要用到查找边界的功能。
opencv的原生api支持c、java、python,python 比较易于调试,所以选择了它。这里使用 python 2.7。
对于有编程经验的人来讲,python 比较容易入门,基本上摸索十分钟左右就可以了(靠谱的IDE也是重要条件嗯)
首先下载 opencv 和 numpy,numpy 装好可以直接用,opencv 要到 build/python 下找到相应的文件复制到项目目录
P.S. 如果运行出错的话,要注意 python、numpy、opency 的平台版本需保持一致
因为图片整体结构比较简单,而且定位点都是矩形,所以用了比较简单的方法,把边界都抽象为矩形处理。
大概流程是这样(findPoint.py 代码后附):
引入依赖
import findPoint import cv2 图片修正(根据四角的定位点修正图片倾斜)
img, rects = findPoint.process_img(findPoint.read_file(dir+source)) fixed = findPoint.fix_image(img, rects) 查找四角定位点
img, rects = findPoint.process_img(fixed) height,width,ch = img.shape points = findPoint.find_corner_points(width, height, rects) 移除无关的矩形
rects = findPoint.remove_rects(rects, points[0].x_max + 10, points[3].x_min - 10, points[0].y_max + 10, points[3].
阅读全文