标签:class 取图 实时 syn als row line 提取 index
FilePath:=‘d:/pic/demo.jpg‘ *判断文件是否存在 file_exists (‘/bin/cc‘, FileExists) if(FileExists) *读取图片 read_image(Image,FilePath) *写入图片,第三个参数是填充值 write_image(Image,‘jpg‘,0,‘F:/demo.jpg‘) endif *模板的读写操作 *读取region read_region(Region, FilePath) *创建模板 create_shape_model(Image, ‘auto‘, -0.39, 0.79, ‘auto‘, ‘auto‘, ‘use_polarity‘, ‘auto‘, ‘auto‘, ModelID) *保存模板 ModelID是模板的句柄,FileExists是模板文件保存的路径。以shm结尾 write_shape_model(ModelID, ‘d:/aa.shm‘) *模板路径 ModelFilePath:=‘d:/a.shm‘ *判断模板文件是否存在 file_exists (ModelFilePath, FileExists1) *如果存在 if(FileExists1) *读取模板 read_shape_model(FileExists, ModelID1) *获取模板的轮廓。 参数1是轮廓,参数2是模板的句柄 get_shape_model_contours(ModelContours, ModelID1, 1) endif 多张图片的读取: list_file(‘路径‘,[‘files‘,‘directories‘,‘recursive‘,‘max_depth 3‘,follow_links],ImageFiles)//选取文件夹里的图片 tuple_regexp_select(ImageFiles,[‘\\.(jpg)$‘,‘ignore_case‘],ImageFiles)//在上面的那些图片中找到需要的图片 for Index := 0 to |ImageFiles| - 1 by 1 read_image(Image,ImageFiles[Index]) //循环显示出来 *do sth…… endfor 参数解释: 这些参数都写在一个中括号当中,如果需要就写,如果不需要就不要写在里面了。 files——指定搜索的格式为文件 directories——指定搜索的格式为文件夹 recursive——指定可以遍历子文件夹里面的文件 max_depth 3——指定遍历的深度 max_files 1000——指定遍历的最大文件数量 \\——转义符 ()——规则的集合。比如我们要选择bmp jpg tif格式的图片(bmp|jpg|tif) ignore_case——忽略大小写
*图片路径 FilePath:=‘d:/pic/demo.jpg‘ *判断文件是否存在 file_exists (‘/bin/cc‘, FileExists) if(FileExists) *读取图片 read_image(Image,FilePath) *写入图片,第三个参数是填充值 write_image(Image,‘jpg‘,0,‘F:/demo.jpg‘) endif
1、使用摄像头采集图像 助手→打开新的image acquisition,在新弹出的窗口中选择“图像获取接口”→ “检测”→“实时”(是一个图标)→插入代码 * Code generated by Image Acquisition 05 open_framegrabber (‘DirectShow‘, 1, 1, 0, 0, 0, 0, ‘default‘, 8, ‘rgb‘, -1, ‘false‘, ‘default‘, ‘Sirius USB2.0 Camera‘, 0, -1, AcqHandle) grab_image_start (AcqHandle, -1) while (true) grab_image_async (Image, AcqHandle, -1)//抓取图像,抓取到的图像会在Image中 * Do something//对图像进行处理 endwhile close_framegrabber (AcqHandle) 2、从索引列表中获取图片。in.seq文件(用notepad打开之后会发现是图片的路径) 步骤同上,只是不点检测,直接生成代码。 * Code generated by Image Acquisition 06 open_framegrabber (‘File‘, 1, 1, 0, 0, 0, 0, ‘default‘, -1, ‘default‘, -1, ‘false‘, ‘fabrik‘, ‘default‘, 1, -1, AcqHandle) grab_image_start (AcqHandle, -1) while (true) grab_image_async (Image, AcqHandle, -1) * Do something endwhile close_framegrabber (AcqHandle) 代码生成之后,再fabrik改成in.seq文件的路径 xxx/in.seq
*读取region read_region(Region, FilePath) *创建模板 create_shape_model(Image, ‘auto‘, -0.39, 0.79, ‘auto‘, ‘auto‘, ‘use_polarity‘, ‘auto‘, ‘auto‘, ModelID) *保存模板 ModelID是模板的句柄,FileExists是模板文件保存的路径。以shm结尾 write_shape_model(ModelID, ‘d:/aa.shm‘) *模板路径 ModelFilePath:=‘d:/a.shm‘ *判断模板文件是否存在 file_exists (ModelFilePath, FileExists1) *如果存在 if(FileExists1) *读取模板 read_shape_model(FileExists, ModelID1) *获取模板的轮廓。 参数1是轮廓,参数2是模板的句柄 get_shape_model_contours(ModelContours, ModelID1, 1) endif
hsv 通道 h表示颜色:0~360 s饱和度:0~100% v亮度:0~100% read_image(Image,‘d:/anNiu.jpg‘) decompose3(Red,Green,Blue,H,S,V,‘hsv‘) *将RGB图像转换成HSV图像 trans_from_rgb(Red,Green,Blue,H,S,V,‘hsv‘) *下面进行阈值分割,之所以取S图,是因为S图中的按钮,与其他通道中的图片有明显的区别。 threshold(S,Regions,80,255) *提取图片 reduce_domain(Image,Regions,ImageReduced) *将reduce之后的的图片,作RGB通道的分离 decompose3(ImageReduced,Red1,Green1,Blue1) *通过观察,发现R通道中的红色按钮明显比其他通道中的按钮要白很多 threshold(Red1,Regions1,148,255)
阈值分割:以灰度值分割的方式将图片与背景分离开,称之为阈值分割。 *声明两个数组,用于存放计算后,得到的图片的坐标值。 x:=[] y:=[] *读取图片 read_image (Image, ‘F:/pics/map.png‘) *转成灰度图 rgb1_to_gray(Image, GrayImage) *确定一个ROI gen_rectangle1 (ROI_1_0, 3.066, 25.8126, 188.3, 409.231) *将多余的图片给裁剪掉 reduce_domain (GrayImage, ROI_1_0, ImageReduced) *阈值分割,可能需要使用灰度直方图来进行调参 threshold (ImageReduced, Regions, 15, 91) *求连域 connection (Regions, ConnectedRegions) *选择一块区域,可能需要使用到特征直方图。根据一般情况下使用面积和圆率来进行过滤 select_shape (ConnectedRegions, SelectedRegions, [‘area‘,‘roundness‘], ‘and‘, [159.45,0.7774], [202.11,0.9318]) area_center(SelectedRegions,Area,Row,Column) x[0]:=[Row] y[0]:=[Column]
标签:class 取图 实时 syn als row line 提取 index
原文地址:https://www.cnblogs.com/vichin/p/9355467.html