|

楼主 |
发表于 2025-4-8 17:36:12
|
显示全部楼层
四川省成都市

.版本 2
.支持库 BmpOperate
.子程序 找图, 坐标型, , 成功返回坐标,失败返回 -1 -1
.参数 参_整图数据, 字节集
.参数 参_欲找图数据, 字节集
.参数 参_误差值, 整数型, 可空
.参数 参_吻合值, 整数型, 可空, 空为100
.局部变量 局_原图象, 位图
.局部变量 局_目标图片, 位图
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 g, 整数型
.局部变量 局_基色, 整数型
.局部变量 局_基点色, 整数型
.局部变量 局_已吻合值, 整数型
.局部变量 局_已不吻合值, 整数型
.局部变量 局_不吻合值, 整数型
.局部变量 局_总长, 整数型
.局部变量 局_临时颜色值, 整数型
.局部变量 局_位置, 坐标型
.局部变量 局_坐标, 坐标型, , , 返还目标图片左上角所在坐标
.局部变量 局_基点, 坐标型
.如果真 (是否为空 (参_误差值))
参_误差值 = 100
.如果真结束
.如果真 (是否为空 (参_吻合值))
参_吻合值 = 100
.如果真结束
局_原图象.载入数据 (参_整图数据)
局_目标图片.载入数据 (参_欲找图数据)
局_总长 = 局_目标图片.取宽度 () × 局_目标图片.取高度 ()
参_吻合值 = 局_总长 × 参_吻合值 \ 100
.如果 (参_吻合值 = 局_总长)
局_不吻合值 = 1
.否则
局_不吻合值 = 局_总长 - 参_吻合值 + 1
.如果结束
参_误差值 = 取绝对值 (参_误差值 × 16777215 \ 100000)
置随机数种子 ()
局_基点.x = 取随机数 (0, 局_目标图片.取宽度 () - 1)
局_基点.y = 取随机数 (0, 局_目标图片.取高度 () - 1)
局_基色 = 局_目标图片.取某点颜色 (局_基点.x, 局_基点.y)
.计次循环首 (局_原图象.取宽度 (), i)
.计次循环首 (局_原图象.取高度 (), j)
局_基点色 = 局_原图象.取某点颜色 (i - 1, j - 1) ' 取大图片中某点色
.如果真 (取绝对值 (局_基点色 - 局_基色) ≤ 参_误差值) ' 取起点颜色值
局_已吻合值 = 0
局_已不吻合值 = 0
.计次循环首 (局_目标图片.取宽度 (), k) ' 循环判断颜色值
.计次循环首 (局_目标图片.取高度 (), g)
局_位置.x = i + k - 2 - 局_基点.x
.如果真 (局_位置.x > 局_原图象.取宽度 () - 1 或 局_位置.x < 0)
跳出循环 ()
.如果真结束
局_位置.y = j + g - 2 - 局_基点.y
.如果真 (局_原图象.取高度 () - 1 < 局_位置.y 或 局_位置.y < 0)
跳出循环 ()
.如果真结束
局_临时颜色值 = 取绝对值 (局_原图象.取某点颜色 (局_位置.x, 局_位置.y) - 局_目标图片.取某点颜色 (k - 1, g - 1))
.如果 (局_临时颜色值 ≤ 参_误差值)
局_已吻合值 = 局_已吻合值 + 1
.否则
局_已不吻合值 = 局_已不吻合值 + 1
.如果结束
.如果真 (局_已吻合值 ≥ 参_吻合值)
局_坐标.x = i - 1 - 局_基点.x
局_坐标.y = j - 1 - 局_基点.y
返回 (局_坐标)
.如果真结束
.如果真 (局_已不吻合值 ≥ 局_不吻合值)
跳出循环 ()
.如果真结束
处理事件 ()
.计次循环尾 ()
.如果真 (局_已不吻合值 ≥ 局_不吻合值)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.如果真结束
处理事件 ()
.计次循环尾 ()
.计次循环尾 ()
局_坐标.x = -1
局_坐标.y = -1
返回 (局_坐标) |
|