识别二维码内容软件精度很高

易语言 2020-02-12 14:24:52

识别二维码内容软件精度很高

.子程序 识别二维码, 文本型, , 只要微信扫的出来的应该都可以识别
.参数 图片, 字节集
.参数 旋转最大角度, 整数型, 可空, 为了修正图片倾斜识别失败
.参数 旋转递增值, 整数型, 可空, 为了效率
.参数 二维码宽度, 整数型, 可空
.参数 二维码高度, 整数型, 可空
.参数 检测宽高递增次数, 整数型, 可空, 为了修正拉伸图片检测不到
.参数 检测宽高递增值, 整数型, 可空, 为了效率
.参数 识别次数, 整数型, 参考 可空
.局部变量 buf, 文本型
.局部变量 ret, 整数型
.局部变量 旋转角度, 整数型
.局部变量 检测宽度, 整数型
.局部变量 检测高度, 整数型
.局部变量 循环_旋转, 整数型
.局部变量 上次旋转方向, 整数型
.局部变量 左旋角度, 整数型
.局部变量 右旋角度, 整数型
.局部变量 循环_宽高, 整数型
.局部变量 上次递增选择, 整数型, , , 0=宽 1=高
.局部变量 临时检测宽度, 整数型
.局部变量 临时检测高度, 整数型
.局部变量 循环_检测宽高, 整数型
.局部变量 检测类型, 整数型

识别次数 = 0
buf = 取空白文本 (500) ' 二维码长度一定不能长于这个缓冲区
检测宽度 = 选择 (二维码宽度 = 0, 100, 二维码宽度)
检测高度 = 选择 (二维码高度 = 0, 100, 二维码高度)
检测宽高递增值 = 选择 (检测宽高递增值 = 0, 1, 检测宽高递增值)
.计次循环首 (旋转最大角度 × 2 + 1, 循环_旋转)
.判断开始 (循环_旋转 = 1)
旋转角度 = 0
.默认
.判断开始 (上次旋转方向 = 0)
左旋角度 = 左旋角度 + 旋转递增值
旋转角度 = -左旋角度
上次旋转方向 = 1
.默认
右旋角度 = 右旋角度 + 旋转递增值
旋转角度 = 右旋角度
上次旋转方向 = 0
.判断结束

.判断结束
临时检测宽度 = 检测宽度
临时检测高度 = 检测高度
ret = decodeimgbuffind (图片, 取字节集长度 (图片), buf, 旋转角度, 临时检测宽度, 临时检测高度, 0)
识别次数 = 识别次数 + 1
.如果真 (buf ≠ “nocode”)
返回 (buf)
.如果真结束
.计次循环首 (2, 检测类型)
.计次循环首 (检测宽高递增次数, 循环_检测宽高)
.判断开始 (检测类型 = 1)
ret = decodeimgbuffind (图片, 取字节集长度 (图片), buf, 旋转角度, 检测宽度, 检测高度 + 循环_检测宽高 × 检测宽高递增值, 0)
.默认
ret = decodeimgbuffind (图片, 取字节集长度 (图片), buf, 旋转角度, 检测宽度 + 循环_检测宽高 × 检测宽高递增值, 检测高度, 0)
.判断结束
识别次数 = 识别次数 + 1
.如果真 (buf ≠ “nocode”)
返回 (buf)
.如果真结束

.计次循环尾 ()
.计次循环尾 ()
.计次循环尾 ()

.子程序 显示
.参数 图片, 字节集
.局部变量 time, 整数型
.局部变量 识别次数, 整数型

画板1.底图 = 图片
time = 取启动时间 ()
编辑框_识别结果.内容 = 识别二维码 (图片, 3, 2, 100, 100, 3, 2, 识别次数)
编辑框_识别结果.加入文本 (#换行符 + “识别次数:” + 到文本 (识别次数) + “,识别耗时:” + 到文本 (取启动时间 () - time) + “MS”)