您的位置:首页技术文章
文章详情页

Python识别处理照片中的条形码

【字号: 日期:2022-07-05 13:09:11浏览:4作者:猪猪

最近一直在玩数独,突发奇想实现图像识别求解数独,输入到输出平均需要0.5s。

整体思路大概就是识别出图中数字生成list,然后求解。

输入输出demo

数独采用的是微软自带的Microsoft sudoku软件随便截取的图像,如下图所示:

Python识别处理照片中的条形码

经过程序求解后,得到的结果如下图所示:

Python识别处理照片中的条形码

def getFollow(varset, terminalset, first_dic, production_list): follow_dic = {} done = {} for var in varset:follow_dic[var] = set()done[var] = 0 follow_dic['A1'].add('#') # for var in terminalset: # follow_dic[var]=set() # done[var] = 0 for var in follow_dic:getFollowForVar(var, varset, terminalset, first_dic, production_list, follow_dic, done) return follow_dic def getFollowForVar(var, varset, terminalset, first_dic, production_list, follow_dic, done): if done[var] == 1:return for production in production_list:if var in production.right: ##index这里在某些极端情况下有bug,比如多次出现var,index只会返回最左侧的 if production.right.index(var) != len(production.right) - 1:follow_dic[var] = first_dic[production.right[production.right.index(var) + 1]] | follow_dic[var] # 没有考虑右边有非终结符但是为null的情况 if production.right[len(production.right) - 1] == var:if var != production.left[0]: # print(var, '吸纳', production.left[0]) getFollowForVar(production.left[0], varset, terminalset, first_dic, production_list, follow_dic, done) follow_dic[var] = follow_dic[var] | follow_dic[production.left[0]] done[var] = 1

程序具体流程

程序整体流程如下图所示:

Python识别处理照片中的条形码

读入图像后,根据求解轮廓信息找到数字所在位置,以及不包含数字的空白位置,提取数字信息通过KNN识别,识别出数字;无数字信息的在list中置0;生成未求解数独list,之后求解数独,将信息在原图中显示出来。

def initProduction(): production_list = [] production = Production(['A1'], ['A'], 0) production_list.append(production) production = Production(['A'], ['E', 'I', '(', ')', '{', 'D', '}'], 1) production_list.append(production) production = Production(['E'], ['int'], 2) production_list.append(production) production = Production(['E'], ['float'], 3) production_list.append(production) production = Production(['D'], ['D', ';', 'B'], 4) production_list.append(production) production = Production(['B'], ['F'], 5) production_list.append(production) production = Production(['B'], ['G'], 6) production_list.append(production) production = Production(['B'], ['M'], 7) production_list.append(production) production = Production(['F'], ['E', 'I'], 8) production_list.append(production) production = Production(['G'], ['I', '=', 'P'], 9) production_list.append(production) production = Production(['P'], ['K'], 10) production_list.append(production) production = Production(['P'], ['K', '+', 'P'], 11) production_list.append(production) production = Production(['P'], ['K', '-', 'P'], 12) production_list.append(production) production = Production(['I'], ['id'], 13) production_list.append(production) production = Production(['K'], ['I'], 14) production_list.append(production) production = Production(['K'], ['number'], 15) production_list.append(production) production = Production(['K'], ['floating'], 16) production_list.append(production) production = Production(['M'], ['while', '(', 'T', ')', '{', 'D', ';', '}'], 18) production_list.append(production) production = Production(['N'], ['if', '(', 'T', ')', '{', 'D',';', '}', 'else', '{', 'D', ';','}'], 19) production_list.append(production) production = Production(['T'], ['K', 'L', 'K'], 20) production_list.append(production) production = Production(['L'], ['>'], 21) production_list.append(production) production = Production(['L'], ['<'], 22) production_list.append(production) production = Production(['L'], ['>='], 23) production_list.append(production) production = Production(['L'], ['<='], 24) production_list.append(production) production = Production(['L'], ['=='], 25) production_list.append(production) production = Production(['D'], ['B'], 26) production_list.append(production) production = Production(['B'], ['N'], 27) production_list.append(production) return production_list source = [[5, 'int', ' 关键字'], [1, 'lexicalanalysis', ' 标识符'], [13, '(', ' 左括号'], [14, ')', ' 右括号'], [20, '{', ' 左大括号'], [4, 'float', ' 关键字'], [1, 'a', ' 标识符'], [15, ';', ' 分号'], [5, 'int', ' 关键字'], [1, 'b', ' 标识符'], [15, ';', ' 分号'], [1, 'a', ' 标识符'], [12, '=', ' 赋值号'], [3, '1.1', ' 浮点数'], [15, ';', ' 分号'], [1, 'b', ' 标识符'], [12, '=', ' 赋值号'], [2, '2', ' 整数'], [15, ';', ' 分号'], [8, 'while', ' 关键字'], [13, '(', ' 左括号'], [1, 'b', ' 标识符'], [17, '<', ' 小于号'], [2, '100', ' 整数'], [14, ')', ' 右括号'], [20, '{', ' 左大括号'], [1, 'b', ' 标识符'], [12, '=', ' 赋值号'], [1, 'b', ' 标识符'], [9, '+', ' 加 号'], [2, '1', ' 整数'], [15, ';', ' 分号'], [1, 'a', ' 标识符'], [12, '=', ' 赋值号'], [1, 'a', ' 标识符'], [9, '+', ' 加号'], [2, '3', ' 整数'], [15, ';', ' 分号'], [21, '}', ' 右大括号'], [15, ';', ' 分号'], [6, 'if', ' 关键字'], [13, '(', ' 左括号'], [1, 'a', ' 标识符'], [16, '>', ' 大于号'], [2, '5', ' 整数'], [14, ')', ' 右括号'], [20, '{', ' 左大括号'], [1, 'b', ' 标识符'], [12, '=', ' 赋值号'], [1, 'b', ' 标识符'], [10, '-', ' 减号'], [2, '1', ' 整数'], [15, ';', ' 分号'], [21, '}', ' 右大括号'], [7, 'else', ' 关键字'], [20, '{', ' 左大括号'], [1, 'b', ' 标识符'], [12, '=', ' 赋值号'], [1, 'b', ' 标识符'], [9, '+', ' 加号'], [2, '1', ' 整数'], [15, ';', ' 分号'], [21, '}', ' 右大括号'], [21, '}', ' 右大括号']]

以上就是Python识别处理照片中的条形码的详细内容,更多关于python 识别条形码的资料请关注好吧啦网其它相关文章!

标签: Python 编程
相关文章: