|

楼主 |
发表于 2025-5-26 20:06:00
|
显示全部楼层
江苏省苏州市
变量名 | 类 型 | 静态 | 数组 | 备 注 | 图片集 | 数组容器 | | | 小地图 | 数据矩阵类 | | |
小地图 = 视觉_图像解码 ( #图片1, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片2, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片3, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片4, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片5, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片6, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片7, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片8, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片9, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片10, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片11, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 )小地图 = 视觉_图像解码 ( #图片12, #读图_彩色模式 )图片集. 加入数据矩阵类 (小地图 ) 模版匹配拼接 (图片集, 1500, 20, 2, 0.5, #匹配_归一化相关_标准 )返回 (0 )|
模版匹配拼接 | | | |
图片集 | 数组容器 | | | | 拼接尺寸 | 整数型 | | | | 中心尺寸 | 整数型 | | | | 缩放 | 双精度小数型 | | | | 裁剪比例 | 小数型 | | | | 匹配模式 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 应该退出 | 逻辑型 | | | 拼接图像 | 数据矩阵类 | | | 小地图 | 数据矩阵类 | | | 对齐点 | 坐标二维整型结构 | | | 匹配位置 | 坐标二维整型结构 | | | 缓存图 | 数据矩阵类 | | | i | 整数型 | | | 尺寸变换图 | 数据矩阵类 | | | x | 整数型 | | | y | 整数型 | | | 宽 | 整数型 | | | 高 | 整数型 | | | 感兴区域 | 矩形整型结构 | | | 目标区域 | 数据矩阵类 | | | 掩码 | 数据矩阵类 | | | 分数 | 双精度小数型 | | |
应该退出 = 假 视觉_创建窗口 (“拼接结果”, #窗口_普通模式 ) 判断循环首 (应该退出 = 假) 计次循环首 (图片集. 成员数 (), i )  小地图 = 图片集. 取数据矩阵类 (i )  如果真 (小地图. 空 ())   调试输出 (“图像为空!”)  到循环尾 ()      视觉_尺寸变换 (小地图, 尺寸变换图, , 缩放, 缩放, #插值_双线性三次 )   判断 (拼接图像. 空 ())      拼接图像. 初始化零 (拼接尺寸, 拼接尺寸, #矩阵_三通道字节型U )     x = (拼接尺寸 - 尺寸变换图.列数 ) ÷ 2    y = (拼接尺寸 - 尺寸变换图.行数 ) ÷ 2    宽 = 尺寸变换图.列数    高 = 尺寸变换图.行数      如果真 (x < 0 或 y < 0 或 x + 宽 > 拼接图像.列数 或 y + 高 > 拼接图像.行数 )   调试输出 (“警告:第一张图像位置越界,无法初始化拼接图像”)    拼接图像. 释放 ()    应该退出 = 真    跳出循环 () 
   感兴区域. 初始化 (x, y, 宽, 高 )   目标区域 = 拼接图像. 感兴区域 (感兴区域 )   掩码 = 创建中心掩码 (尺寸变换图, 中心尺寸 )   尺寸变换图. 复制 (目标区域, )   对齐点.横坐标 = x    对齐点.纵坐标 = y    分数 = 执行模板匹配 (缓存图, 尺寸变换图, 裁剪比例, 中心尺寸, 匹配位置, 匹配模式 )   如果 (分数 < 0 )   调试输出 (“错误:模板匹配失败,跳过当前图像”)   到循环尾 ()   调试输出 (“匹配分数:”, 分数, “[”, 匹配位置.横坐标, 匹配位置.纵坐标, “]”) 
   对齐点.横坐标 = 对齐点.横坐标 + 匹配位置.横坐标    对齐点.纵坐标 = 对齐点.纵坐标 + 匹配位置.纵坐标   调试输出 (“拼接位置:[”, 对齐点.横坐标, 对齐点.纵坐标, “]”)     如果真 (对齐点.横坐标 < 0 或 对齐点.纵坐标 < 0 或 x + 尺寸变换图.列数 > 拼接图像.列数 或 y + 尺寸变换图.行数 > 拼接图像.行数 )   调试输出 (“警告:图像位置越界,跳过当前图像”)   到循环尾 () 
   感兴区域. 初始化 (对齐点.横坐标, 对齐点.纵坐标, 尺寸变换图.列数, 尺寸变换图.行数 )   目标区域 = 拼接图像. 感兴区域 (感兴区域 )   掩码 = 创建中心掩码 (尺寸变换图, 中心尺寸 )   尺寸变换图. 复制 (目标区域, )
 视觉_显示图像 (“拼接结果”, 拼接图像 )   如果真 (视觉_等待按键 (100 ) ≥ 0 )  跳出循环 ()
  缓存图 = 尺寸变换图. 克隆 () 计次循环尾 ()  如果真 (视觉_等待按键 (1000 ) = 27 )  应该退出 = 真 拼接图像.释放 () 判断循环尾 ()返回 (匹配模式 = #匹配_平方差 或 匹配模式 = #匹配_平方差_标准 或 匹配模式 = #匹配_相关_标准 或 匹配模式 = #匹配_归一化相关_标准 )|
创建中心掩码 | 数据矩阵类 | | |
图 | 数据矩阵类 | | | | 中心尺寸 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 蒙版 | 数据矩阵类 | | | 中心X | 整数型 | | | 中心Y | 整数型 | | | 半径 | 整数型 | | | X1 | 整数型 | | | Y1 | 整数型 | | | X2 | 整数型 | | | Y2 | 整数型 | | |
蒙版. 初始化 (图.行数, 图.列数, 0, 标量 (255 )) 中心X = 图.列数 ÷ 2 中心Y = 图.行数 ÷ 2 半径 = 中心尺寸 ÷ 2 X1 = 视觉_取最大值 (0, 中心X - 半径 )Y1 = 视觉_取最大值 (0, 中心Y - 半径 )X2 = 视觉_取最小值 (图.列数 - 1, 中心X + 半径 )Y2 = 视觉_取最小值 (图.行数 - 1, 中心Y + 半径 ) 如果真 (X2 > X1 且 Y2 > Y1 ) 蒙版. 感兴区域 (矩形整型 (X1, X2, X2 - X1, Y2 - Y1 )). 设置 (标量 (0 ), )返回 (蒙版)|
取子模板 | 数据矩阵类 | | |
输入图像 | 数据矩阵类 | | | | 裁剪 | 小数型 | | | | 裁剪X | 整数型 | | | | 裁剪Y | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 宽 | 整数型 | | | 高 | 整数型 | | | 复制宽 | 整数型 | | | 复制高 | 整数型 | | | 开始X | 整数型 | | | 开始Y | 整数型 | | | 裁剪区域 | 矩形整型结构 | | |
裁剪 = 视觉_取最大值 (0, 视觉_取最小值 (1, 裁剪 )) 宽 = 输入图像.列数 高 = 输入图像.行数 复制宽 = 宽 × 裁剪 复制高 = 高 × 裁剪 开始X = (宽 - 复制宽 ) ÷ 2 开始Y = (高 - 复制高 ) ÷ 2 裁剪区域. 初始化 (开始X, 开始Y, 复制宽, 复制高 ) 裁剪X = 开始X 裁剪Y = 开始Y 返回 (输入图像. 感兴区域 (裁剪区域 )) |
执行模板匹配 | 双精度小数型 | | |
源图像 | 数据矩阵类 | | | | 模板图像 | 数据矩阵类 | | | | 裁剪比例 | 小数型 | | | | 中心尺寸 | 整数型 | | | | 最佳匹配位置 | 坐标二维整型结构 | | | | 匹配方法 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 裁剪X | 整数型 | | | 裁剪Y | 整数型 | | | 子模版 | 数据矩阵类 | | | 掩码 | 数据矩阵类 | | | 结果 | 数据矩阵类 | | | 最小值 | 双精度小数型 | | | 最大值 | 双精度小数型 | | | 最小值坐标 | 坐标二维整型结构 | | | 最大值坐标 | 坐标二维整型结构 | | | 分数 | 双精度小数型 | | | 绘制图 | 数据矩阵类 | | | 如果真 (源图像. 空 () 或 模板图像. 空 ()) 调试输出 (“错误:源图像或模板图像为空!”) 返回 (-1 )
如果真 (模板图像.行数 > 模板图像.行数 或 源图像.列数 > 源图像.列数 ) 调试输出 (“错误:模板尺寸大于源图像!”) 返回 (-1 )子模版 = 取子模板 (模板图像, 裁剪比例, 裁剪X, 裁剪Y) 如果真 (子模版. 空 ()) 调试输出 (“错误:未能提取有效模板!”) 返回 (-1 )
如果 (是否支持掩码 (匹配方法 ))  掩码 = 创建中心掩码 (子模版, 中心尺寸 ) 如果真 (掩码. 空 ())  调试输出 (“错误:未能创建有效掩码!”) 返回 (-1 )  调试输出 (“警告:所选匹配方法不支持掩码,将不使用掩码进行匹配”)
判断 (是否支持掩码 (匹配方法 ) 且 掩码. 空 ()) 视觉_模板匹配 (源图像, 子模版, 结果, 匹配方法, 掩码 ) 视觉_模板匹配 (源图像, 子模版, 结果, 匹配方法, ) 视觉_最小最大位置 (结果, 最小值, 最大值, 最小值坐标, 最大值坐标, ) 如果 (匹配方法 = #匹配_平方差 或 匹配方法 = #匹配_平方差_标准 ) 分数 = 1 - 最小值  最佳匹配位置.横坐标 = 最小值坐标.横坐标 - 裁剪X  最佳匹配位置.纵坐标 = 最小值坐标.纵坐标 - 裁剪Y  分数 = 最大值  最
|
|