粉丝15.4万获赞27.9万

今天花三分钟教大家怎么用黑奥看实现条形码的机器视觉的读码,先打开这个软件,然后打开案例, 这个是他自带的案例,然后选择一维码识别,选择嗯,条形码的识别,然后选择第四个巴克的, 呃,然后把我们就是相机拍到的这张 牛奶的照片,比如说保存在这个位置,然后命名为一 n 二零二二,这个是安利的位置,然后将名称 原来案例中幺三零五的名称改成二零二二,好,然后就能运行了,这些都是他的算子, 反正这个就是应该是读取图片的算子,这个是读取尺寸的算子。呃,还有一些么?就是读取二维码呀,还有以及旋旋转图片角度的算子,其他的什么都不用改,只要改一下图片名称就行了。 然后点击运行,按 f 六,啊,现在出现了我们现在拍到的这张牛奶的照片, 可以放大或者缩小, 然后再按 f 六继续下一步往下一步,这他都是一步一步, 之前我也没有学过,只是最近突然就看懂了。 这片下面这一条指令是把它框了出来, 使用的这条指令翻的拔扣的,这条指令运行之后就会自动读取这个二维码,然后这边的变量窗口就会读取到哦条维码的值, 这是我们的六九零七九九二五零七零九五, 非常简单,读条微码什么都不用改,只需要改一个图片名称。

how can? how can? how can? how can? how can? 零基础入门课堂同学们大家好,欢迎大家来到 halt can 零基础入门课堂,我是主讲李源。这是我们的 qq 群,大家有什么问题可以加群, 今天我们来学习 ocl 自负识别。 ocl 自负识别就是指光学自负识别,是用电子设备,比如说是扫描仪或相机打检查打印的自负,通过检测按量的模式来确定其形状,然后用自负识别的方法将其翻译成 计算器文字的过程。自服识别在日常生活中和工业生产中的应用非常的多,比如我们常见的车牌识别,食品、日用品以及药品的包装上的文字识别,还有各种工业零件容器表面的喷涂 文字都需要进行识别。今天我们用 holk 来识别工业零件上的字符,我们打开 holkan, 首先关闭窗口, 然后读取我们的图片, 得到图片的框高, 然后打开窗口, 这里我们选择这个算子,这个算子就是让我们的窗口来自适应图片大小,显示 限时图片。 我们运行一下,这里我们看到我们的图片是一个三筒的图片,然后我们为了后续的一个处理,我们将其转化成回读图片。 然后接下来我们在自服识别之前,需要对我们的自服区域进行一个定位,这里为了快速定位,我们选择手动框选的方式, 点击这个绘制 l y 去选择绘制着平行句型, 点击右键, 然后插入我们的代码, 这里就是我们插入进来的带。这个是得到我们一个轴频型句型,这是他的左上角的坐标,这是右下角的坐标, 这个就是将我们的两个区域给他整合成一个区域,然后这里我们刚才框选了三个 r y 区域,所以这里使用了两次合并区域的算子,然后我们运行一下, 接下来我们用 radiostome 来裁剪图片, 这个是我们要裁剪的图片,这是我们刚才框选的三个 ry, 去,这个就是输出的一个被裁剪后的图片。 接下来我们就需要提取我们的字符, 我们点开灰度直方图,然后点击预值,滑动我们的最大值来进行筛选。 可以看到由于我们弓箭表面铁锈等因素的一个影响, 我们直接使用全局预支的方法来分割图片,效果不好,所以我们这里考虑考虑用局部预支来分割图片。 我们调用好啃的局部一只蒜子, 我们点击右键打开帮助文档,在这里可以查看这个算子的一些详细解释,我们把它放到 ppt 上来进行一个查看。 这个算子的功能就是使用局部预值分割图片,然后这个参数是我们的原始图像,这是处理后的图像,一般我们指的是用均值率播中值 绿波的绿波处理后的图像。然后这个就是我们的输出参数,他是分割以后的区域, offset 是我们的一个回度值,偏移量一般在五到四十是最好的。然后最后一个参数是我们要提取区域的类型, 他总共分为四个类型,就是暗区、亮区、相似和不相似区, 然后我们的字符可以看到是 是比较暗的,然后我们这里就选择按去, 然后我们的灰度偏移一亮就设置为三十。 so, 在局部预值之前,我们首先要用小,首先要对图像进行一个绿波处理,我们这里用均值绿波来对图像进行处理。 同样我们也在 ppt 里看一下这个算子的一个解释, 他的功能就是对图像进行均值绿波处理,这是输入图像,这是我们绿波后的输出参数, 然后这个是我们平滑模板的一个宽度和高度均值绿波就是对目标像素以及周边像素求平均之后再填充目标像素来实现绿波目的的方法。比如我们下面这幅图,左边是我们要进行绿波的图片,中间这个是我们的三成 三的平滑模板,然后最右边这个就是我们绿波后输出的一个图像。我们首先将我们的平滑模板放在图片上,然后求这个覆盖区域所有像素的一个平均值,然后把这个值付给我们的中心像素, 然后继续继续向用滑动,滑动到这个区域以后,然后计算这个区域所有像素的一个平均值,然后将这个值付给我们的中心像素,这个值算下来大概是六十九, 然后坚持绿波,他就是通过这种方法来实现对图像的一个绿波处理。 一般我们平滑模板的尺寸越大,他所提取的区域就越大,然后根据经验,我们模板尺寸的大小一般设置为要提取目标直径的两倍,这里我们可以看一下我们一个字符的宽度大概是多少, 这一个字符的宽度大概是七十四、七十五,所以我们这里设置为一百五。 我们运行一下, 我们把经过军职绿播后的图像给我们第二个参数,往这里运行一下, 这个就是我们提取的字符,可以看到除了我们字符区域以外,还有许多我们不需要的区, 接下来我们就要去除这些区域。 首先断开取, 然后我们用形态学中的开运算来去除掉一些面积较小以及粘连在我们字符上的一些部分。 这里我们使用圆形结构的开运, 圆的半径我们设置为二点五, 可以看到他去除掉了一些面积较小的区域,以及将我们粘连在支付上的部分也断开了,但是我们注意到他这个虽然断开,但是他们仍然属于一个区域, 这不便于我们后续进行一个处理,所以我们再调用一次。 然后我们打开特征脂肪图, 将一些面积较小的部分给筛选掉, 换一下颜色, 可以看到他把我们的字符也给筛选掉了,所以我们需要选择一个合适的纸 插入袋子 清除一下窗口,这里看到还有一个区域没有被筛选 出来,然后我们通过观察他的特征,发现他是列坐标最大的,我们可以根据这个特征来去除掉他特征,这里换为列坐标滑动这个最大值 用插入代码。 经过上面的处理,我们得到了我们要进行识别的字母区域,但是我们注意到这个二被分成了两个区域, 这不便于后续的进行一个正负识别,所以我们需要将这个区域给他变成一个一个区域。 这里首先想到的就是用形态学中的膨胀和避孕算来进行连接,在连接在连接这个区域之前,我们需要我们首先需要把这个整个区域给它整合为一个整体, 这个算子和我们上面的这个算是不一样的,这个是把所有区域整合为一个整体,而这个算子是只针对两个区域, 然后我们用圆形结构的膨胀 圆的半径设置为五,然后断开区域, 将我们断开后的区域和和整合整合为一个整体的区域进行求交集, 这里我们就使每一个字符都是一个单独的区域, 然后我们需要把这个横杠给他筛除掉,我们只需要识别出字母和数字就可以了,这个横杠我们可以通过高度这个特征来进行筛选, 下来我们就可以识别字母了。然后在识别之前,我们首先要对我们的区域进行一个排序,因为如果不排序的话,我们最后识别的结果将会按照这个顺序来进行排列, 就会就会复查中断,然后不利于我们进行一个查看, 所以我们要对对这个区域进行一个排序,我们希望我们的区域按照我们的阅读习惯从左到右,从上到下的进行排序。我们调一个好看的 selter raise 算了, 查看一下他的解释,这个算词的功能就是对区域进行排序,这是我们要 进行排序的一个区域,是排序后的区域,这是他的一个排序模式,排序模式总共有以下几种,然后这个就是我们按照第一个点排序,他就指的是我们一个区域 他第一行最前面的这个点,而我们最后一个点就是一个区域最后一行最后一列的那个点, 像这个就是外接矩形的左上角,这个是外接矩形右上角,这个是我们外接矩形左下角和右下角。然后我们想要从左到右,从上到下的顺序排列,可以使用 carico 来解决。 这里我们将排序模式 变成我们这个, 然后这个就是我们按顺序递增或者是按顺序递减,串就是按顺序递增,把锁就是按顺序递减, 最后一个算最后一个参数就是,呃,就是指的是我们先按行排列还是按列排列,这里设置为行的话,他就是先排行,然后再排列, 然后我们看一下他是否按照我们的要求进行拍摄, 可以看到他的顺序是正确的。我们这里说一下这个先按行再按列排序是怎样排序,先按行的话,他这个就是我们的第一行,然后这里面有许多的区域, 这时候他就会继继续按照列进行排序,这就是第一个、第二个、第三个这样的,然后这个是我们第二行,他只有一个区域, 这个是我们第三行。两个区域,他这会的时候就会按照我们按照我们的列列坐标进行一个排序。如果你这里设置为设置为列的话,他就是先拍我们的列,然后再拍我们的行, 就是这个是我们第一列,然后这是我们第二列、第三列、第四列,然后到第五列的时候,他有两个区域,这个时候他就会按照行,就是先拍这个,再拍这个, 这第五列也是同样的,他就是按照这样的一个顺序进行排序的。接下来我们就对字符进行一个识别,字符识别会用到两个算字, 一个就是我们读取 ocr 分类器的算子,另一个就是使用 ocr 分类器对多个字符进行识别的算子。我们首先看一下这个读取 ocr 分类器的这个算子, 这个就是我们的文件名或者是我们的文件路径,你可以自己训练这个 ocr 分类器,也可以使用 好很训练好的分类器,这个就是我们后面输出的一个分类器的一个句柄。 在读取了 ocr 分裂器以后,我们就可以对字符进行识别了,这个是我们要识别的字符,这是我们要识别字符的回读图像, 这个就是我们刚才那个 ocr 分类器的句柄,这个就是我们输出的一个识别结果,这个是识别结果的一个精度, 因为我们选择 holk 肯训练好的工业字符分类器, 因为我们这里又有数字又有字母,所以我们选择零到九, a 到 z 的这样一个来气, 这里是我们的回族图像, 运行一下,然后点击我们的控制变量,看他识别的结果是否正确, 我们可以看到识别结果是正确的,并且我们的识别精度也比较高。 接下来我们就要将我们识别的结果进行一个显示,我们设置颜色为红色, 设置边缘显示, 然后显示我们的回购图片, 显示我们排序以后的区域, 你学一下, 接下来就显示我们识别的结果。首先设置一下显示字体的格式, 这个是我们窗口的区别,这是字体的字号,这是字体的名称,这个是加粗,这个是倾斜。然后我们调用 hopen 的显示算字, 这个是我们窗口距离,这是要显示的识别结果,这个是我们显示在 窗口坐标系还是图像坐标系,这个是是我们显示的一个位置行列坐标, 这个参数是我们字体的一个颜色,我们这里将颜色设置为绿色,然后做标系设置,为我们的图像做标系。 boss, 我们这里选择不需要这个 boss, 我们的坐标设置为 七百五和五百, 这就可以看到他把我们的识别结果显示在了图像上,然后我们 不想让他这么显示,想让他显示在我们字符的下方。我们可以使用 holk 的球最小外界巨型的算子 来得到我们每个字符他的一个最小外界举行的左上角和右下角的坐标,然后知道这两个坐标以后,我们就可以知道他左下角的坐标。根据这个坐标我们就可以将我们的识别结果显示在字符下方, 然后运行一下, 这就是我们最终的一个显示结果。到这里我们就完成了一个字符的识别, 我们下节课讲尺寸测量。

各位同学大家好,欢迎来到由心动智能科技出品的机器视觉入门课程,我是主讲刘嘉兴。首先带大家了解一个完整的机器视觉项目总体流程,同时这也是我们学习模块的划分。 首先,在一个视觉项目开发前,我们根据项目的需求选择合适的工业相机镜头光源,就像我们在开始学习时,要打开灯光,戴上合适的眼镜,我们才可以正常的工作学习一样。 所以说工业相机镜头光源是决定我们这个项目能否完成的选题。其次,我们相机镜头光源一切都准备就绪的情况下,我们开始要对图像采集, 将现实空间的影像捕捉到我们的计算机中,这个过程需要对相机的开发,从而获取到我们所需要的图像。第三,在相机捕获到图像后,我们需要对采集到的图像进行识别处理, 比如有些情况下,我们需要去掉黑色的部分,或者需要保留像中圆形的物体,或者筛选出一个红色的物体。因此为了这些结果,我们需要对图像进行识别处理,写出相应的处理程序。 最后,在获取到图像处理结果后,需要对结果做出反应。在自动化设备中,就是控制系统对视觉结果做出不同的动作,如同我们眼睛看到不同的人,会识别出来这个人到底是谁,通过嘴巴喊出不同人的名字一样。 在我们整个机器视觉入门班中,第一个学的不是相机镜头光源的选型,也不是对相机的开发,而是第三个我们整个机器视觉的灵魂,也就是图像的处理,图像处理我们会需要用到一个叫做好看的软件, 那我们为什么要使用薅啃图像处理软件呢?那是因为薅啃的开发周期短,编程难度相较低一点,可湿化程度高。薅啃调整的过程中非常方便,不需要用户有比较好的变声基础,并且图像可以实时的观测并调整。 号口算子可以被 c、 j 加 abc 井等高级开发语言调用。这个是我们 hoken 手把手实战教学的课程目录,我们整个课程分为十四 解,好肯的安装好肯软件功能介绍,图像中的玉质分割以及玉质分割的一些案例。形态学处理形态学的一些案例。相机的标定与测量, 以颜色识别模板匹配手眼标定及好肯与可视化界面的一个联合。

大家好,我是 amy 老师,很高兴我们又见面了。前面我们学过呢,从文件夹读图,从文件读图,包括呢?从相机彩图, 有了这么多图片我们就可以做处理了,是吗?但是有的时候我们这个图片可能先要存下来一下,那怎么办呢?接下来我们就会来学习保存图片。 保存图片呢,其实我们有两种,第一种就是我们相机拍到的原始图片,这个我们是用 red image 这个扇子来保存原始图片, 那我们都说过了,有了图片之后我们会处理,处理了之后呢,在处理后的图片上可能会显示一些我们处理的 信息,这个时候我们又想保存下来,怎么办呢?这个时候其实就像我们手机嗯,聊天信息想要截屏一样,类似的啊,我们处理的图片也可以截屏,这个时候我们是用 dump window 这个算字。 好,接下来我们一个一个来跟大家讲,我们来看一下保存图片, right image, 就是我们得到了这张图片之后,我们希望把它写到一个本地磁盘的位置,这个是图片需要给他一个路径,这个地方写的是 fire lane, 当然我们要给他一个路径啊,比如说我们希望存到桌面, 那我希望存成什么呢?今天的日期二零二一零四三零,是不是?那你要有一个格式,它这里其实已经有一个格式, 是 t i f f 格式,我们先点保存, ok, 这个他存的是一个 b m p, 是不是?好,我们点确定,我们到桌面上来看一下,我们这张图片存下来了吗? 这就是我刚才刚刚保存的这张图片,是不是叫二零二一零四三零点 bmp 点 t i f 是吧? 其实是不需要这个 trf 的啊,好,我们来看一下格式这一块啊,格式这块其实是有很多格式可以选的,比如说我们选中 bmp, 那如果不要刚才那个怎么办呢?我们在这个位置,我们再来一次啊,二零二一零四三零零幺, ok, 点保存,他还是出来一个 b m p 是不是没关系?我们先点确定来看一下,然后再看我们 存下来这张图,这个就是完整的 bmp 的格式的图片啊,是不是我们已经存好了原始图片?那处理后的图片我们刚才不是说可以处理吗?我们用我们学过的 绘图直方图来处理,看看我把黑的字体选出来,是不是看一下啊?哎,这是我选出来的黑的部分,点插入代码,插入代码之后,然后我们运行就出现这个部分,把这张图片存下来,怎么办呢?我们要使用当 window, ok, 在当 window 的时候,他其实就是把这个图形窗口的显示截图下来,所以你需要告诉他是哪一个图形窗口,那我们第一第一个呢就需要填写窗口句柄,窗口句柄呢?我们是通过 d v get window 算起来获取的窗口据柄传过来。那第二个呢?其实就是选择图片格式,我们选择 bmp 好。第三个就是路径,我们同样还是存在我们的桌面上面,保存二零二一零四三零, 保存好点,确定。然后我们来看一下这个时候有没有呢? 大家发现这就是我们存下来的实时图片。在这个地方要特别提醒大家一下,我的保存原始图片和保存这个窗口截图的话都是写在循环里面的,实际上正常使用时候我们可不可以这样写呢? 肯定不行啊,为什么?因为我采集的第一张我存成了他,第二张也存了他,所以他永远都只存了最后一张。 如果我们要改怎么办?我们需要动态的去改变这个路径才可以的,是吧?这个后期有机会我们再讲。讲完了保存图片之后,我们再跟大家讲一讲 onoi。 什么是 onoi 呢? onoi 呢是 region of interest 的缩写,也就是感兴趣区域。 大家知道我们前面讲数据类型的时候,我们讲过图像,图像呢就代表整张图像, 但是很多时候我们做处理的时候,其实我们不需要处理整张图像,我可能只需要处理图像中的一块,比如说像我这个照片,我只处理顶端的这一块,是不是?所以呢,这一块就是我们的感兴趣区域。 那我们怎么样去定义这个感兴趣区域呢?在 hawken 中间感兴趣区域呢?是包括 region 和 chaod 的, 这个我们大家也都很清楚,因为我们在讲数据类型的时候就讲过了,是吧?大家要知道啊,这因为后肯有这两个数据类型,所以呢他有很多针对于这个数据类型的处理的算子,那他就变得非常灵活,这也是后肯一个很明显的优势。 ok, 那我们也知道有这个数据类型了,那怎么样来创建这个类型的数据呢?接下来我们就一个一个来讲创建 r o i 呢,我们有最主要的两种方式, 首先就是我们可以通过图像预处理去得到它,通过就是我们的算子去处理图像,比如说预知分割分到我们的回形针区域,这样子去得到它。另外一种呢,我们也可以自己生成,你想要一个什么样形状, 你可以根据参数来生成,你也可以自己画出一个什么样的东西来,根据你画的再来生成。好吧, 那我们首先要跟大家讲一个概念,就是我们在创建 roi 的时候,它是分形状的,比如说我们要分为圆形、 直线还有矩形,矩形又分为齐轴矩形 rectang 一,仿设矩形 rectang 二,还有像椭圆呢等等这些为什么要分形状呢?因为 roi 的参数跟形状相关,这样子他才能够比较准确的去定义啊。 好,接下来我们来看一下到底怎么使用。开始我们读取一张图片,还用我们原来的这张回形针的图片,是吧?原来我们把回形针分 出来,我们是用预值分割这个算子,然后把按的区域分出来,再生成代码就可以了,把这个区域分出来了,这样子我们得到了一个 region 类型的数据,就是区域,如果我们只要处理 尾形针区域,那这只就是我们一个感兴趣的区域了,这就是我们通过图像处理来得到 r y, 是吧?但是呢,这个区域是图像处理出来的,他并没有去严格定义他是什么形状,是不是? 好,现在我们想自己来做一个 r o i, 怎么做呢?比如说我想做一个 r o i 去把我左上角这个回形针 框出来,这样子呢,我就只要处理这一块了,是吧?那我们有一个工具,同样在这里叫创建 roi 工具,我们来看一下啊,刚才我们讲过 roi 是分形状的,那我们可以创建一个 个圆形,椭圆矩形,仿设矩形,还有任意形状等等这些啊,那我们来先画一个任意形状吧,这个比较特别啊,那我们来画一个任意形状。 ok, 大家可以鼠标左键按住不动一直画,也可以停下来再点,他不需要连续,他会自动把前一点和后一点的连起来。 ok, 点右键确认,必须要点右键确认啊,就画出来这个区域。我们说过了,我们有很多工具都可以帮我们插入代码,那我们插入代码来看一下,关掉它, ok, 运行一下,这个时候大家就会看到了,我们有一个 r o i 杠零,它的语意是 region, 所以它也是一个 region 类型的数据,是吧?然后我们拿到这边来看一下,它的算子是通过什么算子来得到的呢?通过 game region runs 这个 算子来得到的是不是?但是呢,这个中间有很多 row 和 column, 就是有很多很多的点。 好,这个呢,任意区域是比较特别的,那我们再来画一个区域看看,这个时候我们来画一个,嗯, 矩形区域,一个反射矩形。好吧,大家会发现反射矩形是这样子的,它可以旋转角度的啊,好,把右上角这个框出来了,点右键确认,同样来生成一下 看看。我们的反射矩形就是 rectangle two, 这个是跟 rectangle two 生成了一个这样的反射矩形,是不是?好,我们也还可以再生成一个矩形,来看看 一个哦,我们要生成一个矩形啊,来看这两个矩形有什么区别?看这是一个矩形,是不是这两个矩形的话,就是一个 可以旋转,一个是不可以旋转,这个叫起轴矩形是不可以旋转的啊,同样点右键确认这里又生成了一个矩形。 齐轴矩形的话是 gan rick tender e, 是不是 rectangle 一,我们来看一下它生成这个矩形啊,这个算子 gain, 我们简称 gain 呢,其实它是 generation 的缩写。 gain rectangle 一的话呢,我们看这个算字,它输出一个 region 类型的数据,当然这个变量我们可以自定义它的名称,比如说你叫 region 零一是不是 好,但是呢,它输入的话需要有 row e, colon 一, ro r, colon 二,那 ro 一和 colon 一呢,其实就是代表一个点 roar colon 二也代表一个点的 x 和 y, 所以我们生成起一轴矩形,其实需要的是这 这个骑轴矩形左上角的一点和右下角的一点,这个我们一定要搞清楚啊,因为当你知道了这个时候,下次你想生成矩形的时候,你就一定会去想办法得到左上角的点和右下角的点,这样子你就可以生成你想要的矩形了。 okay, 这是 rectangle 一,那 rectangle 二呢?我们发现,咦,它跟我们 rectangle 一不一样的,它同样可以输出一个 region 类型的变样,但是它的输入的话,它有五个参数, 咦,它同样有肉和 column, 但是呢,它还有一个 pi, let's see, let's 二,这是为什么呢?它所需要的五个参数就是这个反射矩形的中心点 坐标和它跟 x 轴的夹角,以及它这个长轴的半轴长度和短轴的半轴长度, 这就是我们反射矩形所需要的一个参数。好,那我们还会有圆 game circle 啊,我们自己来生成看一下, circle 是什么呢?它需要的,诶,这是一个圆哈,它需要的参数是 row 和 corner, 还有 ready 是不是就是它的中心和半径? 所以最后发现我们说啊, oi 要跟形状关联,那生成某一个形状的啊, oi 的时候,它的参数其实就跟这个形状的特点关联起来了,是吧?好在这里 game 我们都是利用已有的这些数据来 生成的,是不是?那要不呢?我们就是借助这个 r o i 工具创建,要不呢?我们就是借助这个创建 r o i 工具画出来的,然后再生成的。 但是,嗯,在我们实际应用中间,我们当我们做好了软件之后,有可能我们没有这个 ry 工具,那怎么办呢? 这个时候我们其实我可,但是大家会发现我们也可以让别人来画,那怎么办呢?其实我们还有一个叫猪,比如说我们有一个算子叫, 其实我们还有个算字叫 draw, 当然你要画什么形状,就是 draw 什么形状了啊,比如说我们 draw second okay, 那我们来试一下看啊, 大家发现这个画的算子呢,它其实需要四个参数,但是我们没有传第一个参数给它,它就报错了。第一个参数是什么呢?就是 window handle, 这个我们其实已经很熟了,我们要获取窗口距离 好再传过来,你就,你才能告诉他是在哪个窗口上去画,是不是?比如说我们在这个窗口上画,咦,我们画一个,我们可以来试一下画一个比他大一点的啊。 ok, 好,这样子画完了之后,我们刚才其实是画了一个形状,是吧?画完了之后得到这个形状吗?并没有。画完了之后,我们看这个算子的输出, 他只得到了这个形状的参数,我们需要跟在他后面,再用一个生成这个形状区域的算子,他才会帮我们生成这个形状,是不是?所以刚才在我们这个绘制新的 roi 工具中间,我们先画再插入, 实际上在我们这个地方是相当于写了两行代码的,大家一定要注意啊,并且在执行 画的这行代码的时候,同样你画完了之后,一定要点鼠标右键确认他才能退出来,不然他一直在画的那个算字执行当中啊。 ok, 这就是化和生成,同样生成的时候,我们不仅可以生成 region, 也可以生成叉 d, 我们可以来看一下 game cycle count x o d 的时候就是生成了 x o d, 是不是?我们只是用原来举了个例子,如果是矩形或者是反射矩形,同样是 gary tiger e count, x o d 等等。啊,这个我就不仔细讲了, 那我们在生成这个叉 l d 的时候,我们相对来说比他稍微大一点点,这样会比较明显一点,好吧,加三十啊,我们来看一下,那么这个就是一个叉 l d, 放到这里我们也能够 发现它的语意是 charity count, 是吧?所以现在我们已经学会了怎么样去画得到你所画形状的参数,然后再通过生成来得到你想要的 roi。 ok, 在这里有一个比较特别一点的,我给大家讲一下,有一个捉 region, 他比较特别的,就是呢,你画完了之后,他是直接得到你想要的你画的这个区域的,因为我们是捉 region 嘛,所以他直接得到一个 region, 而不是这个 区域的参数啊,这个比较特别,我们稍微注意一下,如果你要任意形状,我们就用做 region。 好,现在我们已经有了 roi, 是吧?感兴趣区域哇,这样子我们就可以把图像的处理的这个数据量变小了很多,其他地方 都不关心呢,只关心我们 r o i 区域。那可是我们这个 r o i 的话,比如说我画了一个,哎,画了另外一个,但是呢,我还想得到这两个相交的部分怎么办呢? 我们的 r o i 呢,是可以做很多运算的,比如说你的 region 是可以做交叉并补,这些运算可以让你得到的 r o i 区域在通过运算之后就变成非常灵活。 刚才我们画了这个 rectangle 一和 rectangle 二,是不是如果我们想要求他的交集怎么办呢?交集的话是 intersection, 求我们 rectangle 一是 r o i 零是吧? rectangle 二的话呢是 r o i 零二。 ok, 我们来看一下它得到的区域, 就是这一小块,是不是哪一小块呢?就是这一小块了啊,这是他们俩的交集。 ok, 差级,我们再来看一下,差级呢,一定要有一个包含和被包含的关系,所以我们来可以求一下这个大圆和小圆的差级,你看这样我们看不见了,是吧?怎么办呢?我们可以用这个轮廓模式来显示看一下。咦,这是大圆和小圆, 记住啊,虽然现在看起来像轮廓,但是他要看羽翼的哦,只是因为我们设置的显示模式为轮廓,但是他的羽翼还是 region。 他们的差级的话是用 difference 是大圆。 okay, 第二个圆大一点啊,减去小圆。 我们来看一下,得到的就是这个环形区域了,是不是我们也可以填充来看一下啊? 就是这是他们的差级区域。嗯,还有并级区域,是不是并级区域是什么样子的呢?比如说我们现在这个任意区域和我这个圆形区域他们两个是分开来的, 没有关系的,是吧?那我们现在把它合到一起去变成一个整体可不可以呢?也可以的啊,我们用的是 union 一 用点二啊。 sorry, 用点一的话,我们需要放到嗯 trooper 中间去让它一起合并才可以的。 ok, 那我们这个时候呢,就是让 circle 和 region 来合并 之后,大家发现了吗?从这个地方我们就可以看出来他们已经是一个整体了,你选中的时候就两个一起被选中是吧?这个就是病急补急。什么是补急呢?补急就是除了这个区域之外,图像中间的其他区域就是补急,也就是说 区域和他的补给区域一起构成整张图,那补给的算子是 confim max。 看啊,我们刚才这个 b 级区域,它的普及就是除了它之外其他的区域,是吧? 这个就是我们区域的交叉并谱运算啊,非常的灵活。好,我们再来讲一个呢,就是我们看到了我们有区域 也有轮廓,是不是?我们来看一下他们有什么区别吗?就算他们都显示成轮廓形状,有没有区别?其实是有区别的,看我们的轮廓,轮廓线是拟合出来比较光滑的,是不是我们的区域他其实是有锯齿形状的啊?他是根据像素点一个一个来拼凑成的啊? ok, 那区域和形状呢?他们其实是可以相互转换的,也就是我们可以通过区域来生成轮廓,也可以通过轮廓来生成区域。怎么做呢? 使用算字呢?就是你想生成什么?比如说我想生成区域,那我就是 gain region, 那通过什么生成呢?通过 counter chao d 生成,那就是 gain region, counter chao d, 是吧?如果我想生成轮廓呢?那我们就是 gain counter。 通过什么生成呢?通过 region 生成, 那就是 gain count region 叉 o d 了,我们先生成一个区域看看。 gain region 通过轮廓来生成是吧? counter 叉 o d, 我们刚才有一个 轮廓的,这个大的就是轮廓啊,来看一下生成出来是什么样子呢?看到了吗?这里有两根,是不是哪一根是轮廓, 哪一根是区域?很显然这是一个区域,是不是如果我们填充模式显示,他立马就可以填充了啊? ok, 这是根据轮廓来生成区域,如果我们要根据区域来生成轮廓呢?我们就是跟生成什么就是产生什么啊?跟 counter region charity。 好,再运行一下。这个时候我们用什么来生成呢?用我们刚才画的那个任意区域来生成看一下。好吧,记得 这里是不是刚才我们是画了一个微卷,是不是?但是他现在生成了区域之后而生成轮廓,你发现当我们把区域生成轮廓的时候,这个轮廓会自动 会平滑吗?也不会,是不是他只是变成一个轮廓罢了啊? ok, 这就是根据区域生成轮廓,根据轮廓生成区域这个变换的算字。当然跟大家说过了,我们的 roi 呢,其实还有非常多的 算字,像这些获取区域内的点组啊,求区域的面积中心啊等等,这些都是非常非常经常的算字啊。后面课程我们再跟大家一个一个详细来讲。 好,我们来看一个最简单的,比如说我们要求取这个区域的中心是不是?那怎么办呢? aerial center 就求取到它的中心坐标啊,这个 ok, 我们用这个 region 来啊, region 求取这个区域的中心坐标,是不是你看我们就能够得到它的中心坐标的 x 和 y, 这个地方输出的是 x 和 y, 包括这个区域的面积,我们也求出来了 area, 是不是?那我们也可以把这个 x y 显示出来,通过 game cross 显示出来啊。跟 cos 的话是生成一个十字叉,这个非常有用,帮我们看一个点在哪个地方是经常用到的,大家看到吗?这就是我刚才求出来的区域中心,并且生成一个十字叉给大家来看 啊。好,这就是我们讲到的图像与 r o i, 谢谢大家。

你还在自学,还要看吗?我们将学习执行啦的一种方法,手眼校准与 mv 技术。还要看以下面的设置为例。使用一个机器人和一个固定的二维摄像机,我们要挑选和放置这些木头。快从一个平面上做到这一点。我们需要转换对象摄像机角度的坐标,进入机器人的坐标系统。在这个视频中,我们将表演手眼校准这个设置。我们将确定机器人机坐的位置和 相对于的平面相机和执行一个基本的相机。下个视频我们会讲到,校准在二 d 图像中定位对象,基于形状的匹配,确定 机器人接近的姿势的对象。在本教程中,我们改编了这些。 h 举一些好的例子,起点为自己的相似应用程序。在这个例子中,我们执行首页通过接近上的点进行校准。以后飞机上就只剩下这个机器人了,返回其法兰的坐标。不过我们会用当前工具的中心点,因此我 需要确定这个便宜量。要做到这一点,程序校准机器人触摸点赞还要看是可用的。这里的想法是,接近相同的点与点的 接触。机器人转动加持其三次,至少绕两个轴,查看机器人当前的姿势。转换机器人姿势时,要小心在海尔坑姿势中考虑一些细节,比如旋转和平移的顺序,米对毫米度对弧度等等。此外还有多种方法。在这种情况下,我们与机器人交流,使用海尔坑的通用插座,沟通后接近相同。第三点,我们得到一个可视化机器人的三种姿势 程序,根据这些来决定这一点抵消。接下来让我们表演手眼上述校正 h 开发的例子,我们建议使用啊校准版。这一步我们先来将校准版放在平面上,我们要从过程中挑选校准相机和平面单 图像,然后执行一个基本的相机校准,检查群方根的标定误差和位置。校准版相对于相机,然后我们使用查找器模式校准版执行至少手眼校准方法。平面上有三个不同的点,机器人得到对应的相机坐标和机器人图形窗口中的坐标位,点击反应的按模式附近接近。正确的点是在视力中自动确定。对于理 想的校准发现者,模式应该包括平面的角来优化。这个你也可以移动校准版,你只需要确保至少中可以看到一个翻达模式图像。做了三次这个动作的我们得到了精度的估计,我们要么获取更多的数据,要么继续得到这个结果。最后可以使用。这是手眼的可视化校准和接近的加持器,只为最后将结果写入 文件,保存相机参数,机器人机做的姿态盒。平面相对于相机,这个数据可以用于下一步吗?取放应用程序,这是手眼的介绍用,还要看校准。注意到这一点,只有一种方法可以做手眼动作吗?校准检查解决方案指南,特别是关于三 d 视觉的章节。对于机器人视觉的使用方法比较多,移动摄像机或三 d 数据,感谢你的观看。

这是学生实现的一个贴片机的项目,按启动按钮,运动到产品所在的位置进行拍照,计算出产品所在的位置信息,告诉膝头进行产品的抓取。 接下来运动到下相机进行拍照,就篇最后运动到我们的料盘所在的位置,计算出空的料盘所对应的位置信息,将产品放到对应的料盘里面进行贴合。 接下来都是这样一个流程,抓料,揪片, 放掉贴 盒。 那这台设备是用运动控制板卡步高卡作为运动控制程序,加上三个相机死线产品的抓取组装的一个项目,在我们工业自动化流水线中会经常遇到。

你还在学习,还要看吗?在本教程中,我将向您展示如何集成和 dv up 代码导入你的 c 十二 p 项目,使用库项目导出。在这个视频中,我将主要强调与相应的 c 夹夹教程相比的区别。 如果你还没有看过,我们建议你先看这个教程。一,了解更多有关的文章等功能的信息。我们从相同的 d, v o p。 程序开始阅读这张图片。再一次,这个过程是真正的机器视觉,他把电触电分开。我们的目标是将这个过程继承到 vso s two d, o。 解决方案中。在程序的最后,有一些 d, v, o, p 的可视化。在库项目导出对话框中,我们现在选择 c 杀批作为目标 语言。为了更好的理解之后发生的事情,我们在项目名后面加上 p, n, 在命名空间后面加上 n s。 然后单击 x party。 让我们快速查看一下生成的文件。和 c 加加一样,我们得到一个可耐克文件,它可以用来例如创建一个 visuals todo 解决方案。此外,导出再次复制了使用的 dyop 程序。最后,在原代码中,我们找到了一个包含包装 函数的 c 十 up 文件。所有必须的 dewindon a p i。 代码让我们将其继承到应用程序中。在这里,我编写了一个空白的 c 十 up 程序。现在,为了能够使用 h a, l, c, o, n。 代码和 dewinden, 我们需要添加对 h a, l, c, o, n。 的应用 and 和 dewind in。 因此,我们在解决方案资源管理。其中右键单机 f, r, n, c, s。 选择添加引用。在这里可以从以前的项目中获得 d, l l。 单机浏览导航到百分之 h, a, l, c, o, n, r, o, o, t 百分之边 d, o, t, n, e, t 三五,并添加 helcome 点 n, d, l, l 和 d 文整点 n, d, l, l。 现在让我们编写一些 h, a, l, c, o, n。 代码。首先我们声明两个变量输入图像和生成的区域。然后我们 读取刚才在 dvlp 中读取的图像。接下来我们添加用 dvlp 生成的 c 沙特包装器代码。然后我们可以使用如下代码。首先是我们选择的名称空间,然后是项目名称,然后是功能性。与 c 加加一样,有 必要定义为 sos。 ps, dyop 脚本的位置相对于而精致,他高了三级。为了简化这个路径,您可以将 dyop 脚本复制到冰幕路。如果您愿意,可以在构建项目时自动完成此操作。然后我们可以调用前面在 dyop 中看到的过程。这就是我们需要的所有代码。现在我们可以添加一个断点 运行应用程序。在 h, a, l, c, o, n。 变量检查中,我们可以看到这些变量,我们读取的图像以及该区域作为程序调用的结果。正如我们在 c 加加教程中看到的,你现在可以简单的编辑 dv out 过程,只要签名没有改变,就 不需要重新编译应用程序。这篇简短的介绍到此结束。现在你应该可以使用 developer 库项目导出了将 h, a, l, c, o, n。 代码集成到您的 c 十二 p 英雄程序中。感谢收看!