```
dev_update_off()
dev_close_window()
* 1. 设置图像路径并获取文件列表
ImagePath := 'E:/毕业论文/瓶盖图/'
list_image_files(ImagePath, 'default', [], ImageFiles)
*自动识别常见图像格式
if (|ImageFiles| == 0)
throw('错误:未找到任何图像文件!')
endif
* 2. 准备显示窗口(根据第一幅图像尺寸)
read_image (FirstImage, ImageFiles[1])
get_image_size (FirstImage, Width, Height)
dev_open_window (0, 0, 600, 400, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (2)
* 3. 创建处理进度显示
dev_open_window (0, 620, 300, 100, 'black', ProgWindow)
set_display_font (ProgWindow, 14, 'mono', 'true', 'false')
* 4. 遍历所有图像文件
for FileIndex := 1 to |ImageFiles| by 1
* 4.1 显示处理进度
dev_set_window (ProgWindow)
dev_clear_window ()
ProgressMsg := '处理进度:' + (FileIndex+1)$'d' + '/' + |ImageFiles|$'d'
disp_message (ProgWindow, ProgressMsg, 'window', 12, 12, 'white', 'false')
* 4.2 读取并处理当前图像
read_image(Image, ImageFiles[FileIndex])
dev_set_window (WindowHandle)
dev_clear_window ()
* 预处理流程
decompose3 (Image, R, G, B)
trans_from_rgb (R, G, B, H, S, V, 'hsv')
gauss_filter (V, VFiltered, 5)
* 瓶盖区域定位(增加错误处理)
threshold (VFiltered, Regions, 80, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 9999999)
count_obj (SelectedRegions, NumRegions)
if (NumRegions == 0)
* 显示错误信息并跳过
dev_display (Image)
disp_message (WindowHandle, '瓶盖定位失败:未找到有效区域', 'window', 12, 12, 'red', 'true')
disp_continue_message (WindowHandle, 'white', 'true')
* 参数说明:窗口句柄 | 文字颜色 | 是否显示倒计时(true/false)
wait_key(0)
continue
endif
fill_up (SelectedRegions, RegionFillUp)
shape_trans (RegionFillUp, CapRegion, 'convex')
* 缺陷检测流程
* ...(与原检测流程保持一致,此处省略重复代码)...
* 显示处理结果
dev_display (Image)
dev_set_color ('green')
dev_display (CapRegion)
* 瓶盖定位失败分支:
if (NumRegions == 0)
dev_display (Image)
disp_message (WindowHandle, '瓶盖定位失败:未找到有效区域', 'window', 12, 12, 'red', 'true')
disp_continue_message (WindowHandle, 'white', '按任意键继续...')
wait_key(0)
continue
endif
* 处理间隔控制:
if (FileIndex < |ImageFiles|-1)
disp_continue_message (WindowHandle, 'white', '自动继续倒计时...')
wait_seconds(1)
endif
endfor
* 5. 处理完成提示
dev_set_window (ProgWindow)
dev_clear_window ()
disp_message (ProgWindow, '批量处理完成!', 'window', 12, 12, 'green', 'true')```wait_key( : : : Key)错误:‘要求参数表达式’[21141]位置;19到27
最新发布