本文是针对检验图形纹理是否条理分明,使用形态学的方法对其进行验证,最终输出OK或者NG的结果。顺便认识新算子:decompose3、erosion_rectangle以及语法for循环![原图](https://img-blog.csdnimg.cn/20200307195735519.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMzM5Nw==,size_16,color_FFFFFF,t_70)ImageName := 'solar_cell/solar_cell_'read_image (Image, ImageName + '01')dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_color ('red')dev_set_draw ('margin')dev_set_line_width (2)umImages := 6for Index := 1 to NumImages by 1//简单的for循环语句,与forend嵌套使用,其中Index表示循环自变量,从1到NumImages,每次逐步加1read_image(Image, ImageName + Index$'02')decompose3 (Image, ImageR, ImageG, ImageB)//我们知道色彩的三元素分别为R、G、B,即每一个颜色例如草莓红、沙漠黄等都是由R、G、B三种颜色通过不同的比例混合而得到的,所以在处理彩色图片的时候我们基本上都会用到算子decompose来将原图分解成容易被处理的R、G、B三种黑白图threshold (ImageR, Region, 0, 159)connection (Region, ConnectedRegions)select_shape (ConnectedRegions, GoodSmallParts, ['area','width'], 'and', [3500,130], [5000,300])select_shape (ConnectedRegions, GoodLongParts, ['area','width'], 'and', [6000,350], [10000,550])select_shape (ConnectedRegions, Clutter, ['width','height','area'], 'or', [900,900,0], [1000,1000,100])//当我们需要筛选出需要特征的图片时,使用select_shape算子,当筛选特征有两个或多个时,我们可以用[ ]将两个特征括起来一起使用,可以方便算法的操作difference (ConnectedRegions, GoodSmallParts, Difference)difference (Difference, GoodLongParts, Difference)difference (Difference, Clutter, BrokenParts)shape_trans (BrokenParts, BrokenPartsTrans, 'rectangle1')erosion_rectangle1 (BrokenParts, RegionErosion, 1, 25)//算子erosion_rectangle1可以侵蚀具有矩形结构元素的区域它是非常快速的操作,因为矩形的高度仅以对数形式输入,而宽度完全不输入。即使在非常大的矩形(边长> 100)的情况下,这也可以实现出色的运行效率。注意!!!!:要在各个方向上减少相同的数量,宽度和高度必须为**奇数** 。如果不是这种情况,则该区域在右侧或底部的腐蚀量分别于左侧或顶部的腐蚀量。connection (RegionErosion, ConnectedBreaks)shape_trans (ConnectedBreaks, Breaks, 'outer_circle')dilation_circle (Breaks, Breaks, 6)select_shape (Breaks, Breaks, 'area', 'and', 1, 99999999)count_obj (Breaks, CountBreaks)if (CountBreaks == 0)//条件if语句,与endif嵌套使用,使用原理与C语言一样disp_message (WindowHandle, 'Cell OK', 'window', 12, 12, 'black', 'true')elsedisp_message (WindowHandle, 'Cell not OK', 'window', 12, 12, 'red', 'true')endif//disp_message算子是用来指在图像显示界面实现结果的显示作用if (Index != NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif


if (CountBreaks == 1)
dev_open_window (0, 610, 300, 300, ‘black’, WindowHandle1)
area_center (Breaks, Area, Row, Column)
dev_set_part (Row[0] - 50, Column[0] - 50, Row[0] + 50, Column[0] + 50)
dev_display (Image)
dev_display (BrokenPartsTrans)
dev_display (Breaks)
stop ()
dev_set_window (WindowHandle1)
dev_close_window ()
endif
endfor

每天一个小Demo,有问题的小伙伴请留言交流,一起学习!

使用形态学提取连续背景的断层(erosion_rectangle1算子)相关推荐

  1. 【youcans 的 OpenCV 例程200篇】146. 基于灰度形态学的复杂背景图像重建

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程20 ...

  2. HALCON示例程序edge_segments.hdev提取连续的边缘段

    HALCON示例程序edge_segments.hdev提取连续的边缘段 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () rea ...

  3. 组件导致背景图片断层

    当我们在一个页面使用多个组件,而且在这个页面设置背景图片的时候,会导致背景图片出现断层或者会让每个组件都有一个背景图,如下所示 此时我们需要把背景中的样式改成对象的形式传入,

  4. OpenCV python GrabCut算法提取前景背景图片

    OpenCV python GrabCut算法提取前景背景图片 处理图片:[lena_color.jpg] 手动mask[mask.jpg] import numpy as np import cv2 ...

  5. Excel怎么提取相同背景颜色数据

    今天跟大家分享一下Excel怎么提取相同背景颜色数据 1.打开Excel文件,小编想要将表格中黄色背景单元格数据提取出来. 2.全选表格区域 3.点击下图选项(Excel工具箱,百度即可了解详细下载安 ...

  6. 基于形态学的复杂背景目标检测算法

    1.问题描述: 复杂背景下目标检测存在诸多困难,主要为背景对目标检测的干扰,大量噪声存在导致传统导数边缘检测方法的失效等.本文正是针对上述两点,提出了分割区域图像.利用形态学方法检测目标的新算法:即首 ...

  7. python 筛选提取连续多行_没有比这更简单的Python入门案例,用python打印你的宠物小精灵...

    现在学习Python的人越来越多,但你会以怎样的方式开始编写你的第一个Python代码呢? 下面我教你一个简单的入门案例,很适合最开始的Python学习哦! 即将用到的Python基础语法是:prin ...

  8. oracle 提取连续数字,oracle 得到连续不重复的数字序列

    最近的一个客户的需求实在变态至极. 需要取一个系统编号的字符串,串由3部分组成,前两个是汉字的拼音缩写,基本不难. 最后一部分是一个4位数的纯数字从0001~9999, 每次插入一条数据都要判断从00 ...

  9. python怎么从数组中提取连续的数字_从numpy数组中删除连续的数字

    我是python新手,但我对我要做的这个项目真的很困惑.我看到了一张图片here.我要做的是找出图像中像素范围从0到255的所有方块的平均值.下面的代码显示了我用来计算图片值的方法.出现的问题是像素/ ...

最新文章

  1. 人工智能(Artificial Intelligence)常用算法
  2. ECSHOP在打印订单时打印出商品序号
  3. 《C++ Primer》7.1.2节练习(部分)
  4. 【C++学习笔记五】模板
  5. 关于博客园内嵌入bilibili视频
  6. 交换排序(冒泡、快速)
  7. Android的滑动分析
  8. Git 使用文档( git pull/fetch )
  9. Gamvas Web 0.8.4 发布,JavaScript 游戏引擎
  10. android pcm数据格式,android 实时PCM数据编码成AAC
  11. 使用selenium启动谷歌Chrome浏览器
  12. 第三阶段应用层——1.2 数码相册—字符编码
  13. Web前端开发精品课HTML与CSS基础教程 (莫振杰著) 完整pdf扫描版
  14. Convex Optimization: 3 Convex functions
  15. anime 动画引擎
  16. 关于MD5以及WordPress登录密码的修改(自定义重置)
  17. c#中 .length和length()的差别
  18. bzoj3307: 雨天的尾巴
  19. mathType字体对应word字体
  20. 年薪 30W 和 60W,数据分析师的两道坎

热门文章

  1. mybatis-plus使用注意事项
  2. swoole php 使用教程,Swoole 扩展安装与使用入门
  3. 简单实现一下百度地图
  4. UE4粒子在镜头看不到时不显示问题解决
  5. java实现截图功能
  6. Codeup(云效)手把手教部署SpringCloud项目到私有主机
  7. mysql preparing状态_mysql stage preparing,help!!!
  8. 算法之回溯算法-24点问题
  9. 什么是 云原生应用?
  10. 协通xt800 anydesk teamview 密码获取