多语言展示
当前在线:1212今日阅读:60今日分享:41

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

给出一张数独图片。这张图片是从llang在线截取的。本文,要从图片中,把数字截取出来。
工具/原料
1

电脑

2

python3.6(anaconda)

3

opencv模块

方法/步骤
1

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

2

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

3

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

4

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

5

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

6

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

7

提取数字: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)

注意事项
1

本文的代码,参考了冰不语的《OpenCV玩九宫格数独(一)——九宫格图片中提取数字》。

2

上面,膨胀处理的内核,还可以是别的矩阵,比如方形矩阵、圆形矩阵等,可以参考《特殊矩阵的构造方法》。

3

提取数字,还需要进行数字识别。冰不语用KNN算法实现了数字识别。

推荐信息