本帖最后由 137240129 于 2024-12-22 17:25 编辑
无意间看到一个大佬发的贴子,
hk缺口计算,纯算法,不是yolo训练!不是ddddocr!不是API!_精易论坛
当看完这个贴子的时候,就感觉这个大佬玩的特别花,识别缺口坐标还有这种骚操作,于是就下载下来研究了下
于是就在他源码的基础上改了改,改成二维数组的识别,比他的更精简,
|
验证码_识别缺口x坐标 | 文本型 | | |
_滑块_bin | 字节集 | | | | _底图_bin | 字节集 | | | | 底图y坐标 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 滑块_位图处理对象 | 类_位图处理 | | | 底图_位图处理对象 | 类_位图处理 | | | x | 整数型 | | | y | 整数型 | | | 点色 | 整数型 | | | y1 | 整数型 | | | x1 | 整数型 | | | 相似数 | 整数型 | | | 数组排序 | 文本型 | | 0 | 滑块_bin | 字节集 | | | 底图_bin | 字节集 | | | 滑块_位图操作对象 | 类_位图操作 | | | 底图_位图操作对象 | 类_位图操作 | | | 滑块_宽 | 整数型 | | | 滑块_高 | 整数型 | | | 底图_宽 | 整数型 | | | 底图_高 | 整数型 | | | 底图_二维 | 整数型 | | 1,1 | 滑块_二维 | 整数型 | | 1,1 | 临时 | 整数型 | | |
滑块_宽 = 图片_取宽度 (_滑块_bin )滑块_高 = 图片_取高度 (_滑块_bin )底图_宽 = 图片_取宽度 (_底图_bin )底图_高 = 图片_取高度 (_底图_bin )重定义数组 (底图_二维, 假, 底图_高, 底图_宽 )重定义数组 (滑块_二维, 假, 滑块_高, 滑块_宽 )图片_转换 (_滑块_bin, 1, , 滑块_bin, )图片_转换 (_底图_bin, 1, , 底图_bin, )滑块_bin = 滑块_位图处理对象. 位图二值化 (滑块_bin, 1 )底图_bin = 底图_位图处理对象. 位图二值化 (底图_bin, 113 )图片框3.图片 = 底图_bin 图片框4.图片 = 滑块_bin 滑块_位图操作对象. 从数据创建 (滑块_bin )底图_位图操作对象. 从数据创建 (底图_bin )计次循环首 (底图_高, y )计次循环首 (底图_宽, x )点色 = 底图_位图操作对象. 取某点颜色 (x, y )底图_二维 [y ] [x ] = 选择 (点色 > 1, 0, 1 )计次循环尾 ()计次循环尾 ()计次循环首 (滑块_高, y )临时 = 0 计次循环首 (滑块_宽, x )点色 = 滑块_位图操作对象. 取某点颜色 (x, y )临时 = 临时 + 选择 (点色 > 1, 1, 0 )计次循环尾 ()如果真 (临时 > 0 )跳出循环 ()计次循环尾 ()变量循环首 (y, 滑块_高, 1, y1 )计次循环首 (滑块_宽, x )点色 = 滑块_位图操作对象. 取某点颜色 (x, y1 )滑块_二维 [y1 - y + 1 ] [x ] = 选择 (点色 > 1, 1, 0 )计次循环尾 ()变量循环尾 ()计次循环首 (底图_宽, x )如果真 (x + 滑块_宽 > 底图_宽 )跳出循环 ()相似数 = 0计次循环首 (滑块_高, y1 )计次循环首 (滑块_宽, x1 )如果真 (底图_二维 [底图y坐标 + y1 - 1 ] [x + x1 - 1 ] = 滑块_二维 [y1 ] [x1 ] 且 滑块_二维 [y1 ] [x1 ] = 1 )相似数 = 相似数 + 1 计次循环尾 ()计次循环尾 ()加入成员 (数组排序, 到文本 (x ) + “,” + 到文本 (相似数 )) 计次循环尾 ()文本数组排序 (数组排序, “,”, 1, 真)返回 (文本_取左边 (数组排序 [1 ], “,”)) |
文本数组排序 | | | |
数组 | 文本型 | | | | 分割符号 | 文本型 | | | | 排序的次数 | 整数型 | | | | 从大到小 | 逻辑型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 数组排序结果 | 文本型 | | 0 | 分割数组 | 文本型 | | 0 | h | 整数型 | | | 要找的次数 | 文本型 | | | 要找的位置 | 整数型 | | | k | 整数型 | | | 当前次数 | 文本型 | | | 计次循环首 (排序的次数, h )分割数组 = 分割文本 (数组 [1 ], 分割符号, )要找的次数 = 分割数组 [取数组成员数 (分割数组 )]要找的位置 = 1 计次循环首 (取数组成员数 (数组 ), k )分割数组 = 分割文本 (数组 [k ], 分割符号, )当前次数 = 分割数组 [取数组成员数 (分割数组 )]如果 (从大到小 = 真)如果真 (到数值 (要找的次数 ) < 到数值 (当前次数 )) 要找的次数 = 当前次数 要找的位置 = k 如果真 (到数值 (要找的次数 ) > 到数值 (当前次数 )) 要找的次数 = 当前次数 要找的位置 = k 计次循环尾 ()加入成员 (数组排序结果, 数组 [要找的位置 ])删除成员 (数组, 要找的位置, )计次循环尾 ()数组 = 数组排序结果
编译后识别速度基本在200毫秒左右,水平有限,比他的也快不了多少
demo.e
(685.3 KB, 下载次数: 24, 售价: 2 枚 精币)
|