从数独图片中截取数字(基于python)

作者:神奇的周 | 创建时间: 2023-06-21
给出一张数独图片。 这张图片是从 llang在线截取的。 本文,要从图片中,把数字截取出来。...
从数独图片中截取数字(基于python)

操作方法

把图片转化为灰度图。 import cv2 img = cv2.imread('0.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

对灰度图进行二值处理: ret,et = cv2.threshold(gray,230,255,1)

给出一个十字形矩阵: k = cv2.getStructuringElement(cv2.MORPH_CROSS,(6, 6))

用k作为卷积内核,对二值图像进行膨胀处理: d = cv2.dilate(et,k)

提取图片中的轮廓: im,co,h = cv2.findContours( d,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

提取小轮廓: boxes = [] for i in range(len(h[0])): if h[0][i][3] == 0: boxes.append(h[0][i])

提取数字: nm = [] for j in range(len(boxes)): if boxes[j][2] != -1: x,y,w,h = cv2.boundingRect(co[boxes[j][2]]) nm.append([x,y,w,h]) #在原图中框选各个数字 img = cv2.rectangle( img,(x-1,y-1), (x+w+1,y+h+1),(0,0,255),2)

温馨提示

本文的代码,参考了冰不语的《OpenCV玩九宫格数独(一)——九宫格图片中提取数字》。
上面,膨胀处理的内核,还可以是别的矩阵,比如方形矩阵、圆形矩阵等,可以参考《特殊矩阵的构造方法》。
提取数字,还需要进行数字识别。冰不语用KNN算法实现了数字识别。
点击展开全文

更多推荐