|
|
功能太小众,不专门搞过这个的基本不会帮你,太麻烦了。你想自己实现的话,原理就是取出块颜色表,颜色表需要是rgb格式,然后分别比对r,g,b的颜色相似度,你可以看一下我这个代码,计算两个图片边缘相似度的,实现原理差不多,改的话会方便一点
|
| 计算整体边缘匹配相似度 | 双精度小数型 | | |
| 参_小块数组 | 位图 | | | | 参_网格尺寸 | 整数型 | | | | 参_图片宽度 | 整数型 | | | | 参_图片高度 | 整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 局_总相似度 | 双精度小数型 | | | | 局_比较次数 | 整数型 | | | | 局_纵向索引 | 整数型 | | | | 局_横向索引 | 整数型 | | | | 局_索引1 | 整数型 | | | | 局_索引2 | 整数型 | | | | 局_相似度 | 双精度小数型 | | |
局_纵向索引 = 0 判断循环首 (局_纵向索引 < 参_网格尺寸 ) 局_横向索引 = 0  判断循环首 (局_横向索引 < 参_网格尺寸 - 1 )  局_索引1 = 局_纵向索引 × 参_网格尺寸 + 局_横向索引   局_索引2 = 局_纵向索引 × 参_网格尺寸 + 局_横向索引 + 1    如果真 (参_小块数组 [局_索引1 + 1 ]. 是否为空 () = 假 且 参_小块数组 [局_索引2 + 1 ]. 是否为空 () = 假)   局_相似度 = 计算水平相邻相似度 (参_小块数组 [局_索引1 + 1 ], 参_小块数组 [局_索引2 + 1 ])   局_总相似度 = 局_总相似度 + 局_相似度    局_比较次数 = 局_比较次数 + 1  局_横向索引 = 局_横向索引 + 1 判断循环尾 () 局_纵向索引 = 局_纵向索引 + 1 判断循环尾 () 局_纵向索引 = 0 判断循环首 (局_纵向索引 < 参_网格尺寸 - 1 ) 局_横向索引 = 0  判断循环首 (局_横向索引 < 参_网格尺寸 )  局_索引1 = 局_纵向索引 × 参_网格尺寸 + 局_横向索引   局_索引2 = (局_纵向索引 + 1 ) × 参_网格尺寸 + 局_横向索引    如果真 (参_小块数组 [局_索引1 + 1 ]. 是否为空 () = 假 且 参_小块数组 [局_索引2 + 1 ]. 是否为空 () = 假)   局_相似度 = 计算垂直相邻相似度 (参_小块数组 [局_索引1 + 1 ], 参_小块数组 [局_索引2 + 1 ])   局_总相似度 = 局_总相似度 + 局_相似度    局_比较次数 = 局_比较次数 + 1  局_横向索引 = 局_横向索引 + 1 判断循环尾 () 局_纵向索引 = 局_纵向索引 + 1 判断循环尾 () 如果真 (局_比较次数 > 0 ) 返回 (局_总相似度 ÷ 局_比较次数 )返回 (0)|
| 计算水平相邻相似度 | 双精度小数型 | | |
| 参_左边小块 | 位图 | | | | 参_右边小块 | 位图 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 局_相似度 | 双精度小数型 | | | | 局_小块高度 | 整数型 | | | | 局_纵向位置 | 整数型 | | | | 局_颜色左 | 整数型 | | | | 局_颜色右 | 整数型 | | | | 局_红左 | 整数型 | | | | 局_绿左 | 整数型 | | | | 局_蓝左 | 整数型 | | | | 局_红右 | 整数型 | | | | 局_绿右 | 整数型 | | | | 局_蓝右 | 整数型 | | | | 局_差异 | 整数型 | | |
局_小块高度 = 参_左边小块. 取高度 () 判断循环首 (局_纵向位置 < 局_小块高度 )  局_颜色左 = 参_左边小块. 取某点颜色 (参_左边小块. 取宽度 () - 1, 局_纵向位置 ) 颜色分解 (局_颜色左, 局_红左, 局_绿左, 局_蓝左 )  局_颜色右 = 参_右边小块. 取某点颜色 (0, 局_纵向位置 ) 颜色分解 (局_颜色右, 局_红右, 局_绿右, 局_蓝右 )  局_差异 = 取绝对值 (局_红左 - 局_红右 ) + 取绝对值 (局_绿左 - 局_绿右 ) + 取绝对值 (局_蓝左 - 局_蓝右 )  局_相似度 = 局_相似度 + 1 - 局_差异 ÷ 765  局_纵向位置 = 局_纵向位置 + 1 判断循环尾 () 返回 (局_相似度 ÷ 局_小块高度 )|
| 计算垂直相邻相似度 | 双精度小数型 | | |
| 参_上方小块 | 位图 | | | | 参_下方小块 | 位图 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 局_相似度 | 双精度小数型 | | | | 局_小块宽度 | 整数型 | | | | 局_横向位置 | 整数型 | | | | 局_颜色上 | 整数型 | | | | 局_颜色下 | 整数型 | | | | 局_红上 | 整数型 | | | | 局_绿上 | 整数型 | | | | 局_蓝上 | 整数型 | | | | 局_红下 | 整数型 | | | | 局_绿下 | 整数型 | | | | 局_蓝下 | 整数型 | | | | 局_差异 | 整数型 | | |
局_小块宽度 = 参_上方小块. 取宽度 () 判断循环首 (局_横向位置 < 局_小块宽度 )  局_颜色上 = 参_上方小块. 取某点颜色 (局_横向位置, 参_上方小块. 取高度 () - 1 ) 颜色分解 (局_颜色上, 局_红上, 局_绿上, 局_蓝上 )  局_颜色下 = 参_下方小块. 取某点颜色 (局_横向位置, 0 ) 颜色分解 (局_颜色下, 局_红下, 局_绿下, 局_蓝下 )  局_差异 = 取绝对值 (局_红上 - 局_红下 ) + 取绝对值 (局_绿上 - 局_绿下 ) + 取绝对值 (局_蓝上 - 局_蓝下 )  局_相似度 = 局_相似度 + 1 - 局_差异 ÷ 765  局_横向位置 = 局_横向位置 + 1 判断循环尾 () 返回 (局_相似度 ÷ 局_小块宽度 )|
| 颜色分解 | | | |
| 参_颜色值 | 整数型 | | | | 参_红 | 整数型 | | | | 参_绿 | 整数型 | | | | 参_蓝 | 整数型 | | | |
参_红 = 参_颜色值 % 256 参_绿 = 右移 (参_颜色值, 8 ) % 256 参_蓝 = 右移 (参_颜色值, 16 ) % 256
|
|