2020-04-02 14:43:21
勇哥曾经很向往有一台机器人,好在家里搞些视觉实验。可惜这东西值一台四轮车的钱,估计真买了的话,会被老婆按在地上摩擦。其实仔细想想,视觉对位的应用,难点在于标定、还有标定后的对位过程,而不在于怎么找线找点(当然有些时候这个也是难点,但是跟物料关系密切,也就是变成了解决工艺上的问题,不存在原理都不懂的的懵逼)标定的过程主要难点在机器人吸盘的中心和法兰盘的中心不共心,还有些应用中涉及到多相机协调,如果B...
2020-04-01 16:31:14
声明:本文为转载GentlerMan朋友的ApolloStudio系列的文章,所转载图片水印为系统自动添加,并没有盗用其版权的用意。在激光标记领域已越趋成为自动化行业中在质量追溯体系管控环节不可或缺的重要一环的今天,传统的标记方式已不能满足于各类综合性比较强的项目需要了,从而结合越来越多新技术的案例也变得更多了起来,现在我们将一起探讨下机器视觉图像匹配定位技术与传统的激光标刻相结合的一个案例(本文...
2020-04-01 07:34:52
程序调用十张不同光照下的图片,尝试找ncc模板,求取模板位置。最后计算结果的标准差。代码如下:* This example program shows how to use HALCON's correlation-based
* matching. In particular it demonstrates the robustness of this method against...
2020-03-31 09:37:10
OpenCv的Mat和Halcon的HObject数据类型的互相转换,Halcon的版本是13.0,OpenCV的版本是3.2HObject Mat2HObject(const cv::Mat &image)
{
HObject Hobj = HObject();
int hgt = image.rows;
int wid = image.cols;
int i;
/...
2020-03-31 09:21:52
最小二乘法拟合直线概念:最小二乘法多项式直线拟合,根据给定的点,求出它的函数y=f(x),当然求得准确的函数是不太可能的,但是我们能求出它的近似曲线y=φ(x) 原理假设有点 , I = 1,2,3,……n,求近似曲线y=φ(x),并且使得y=φ(x)与y=f(x)的平方偏差和最小,偏差其中我们要找到一组最好的a b ,“最好的”就是要使选出的a b能使得所有的误差达到最小化。在此要注意以下,y...
2020-03-30 23:13:36
*
* Initialize the program
dev_close_window () //关闭图形窗口
dev_open_window (0, 0, 768, 576, 'black', WindowHandle) //打开一个原点在(0,0)的宽为768,高为576,背景为黑色的图形窗口;
dev_update_off ()
dev_set_draw...
2020-03-30 22:45:05
这个例子有点意思 ,非常值得学习一下。它是测量透视畸变图像上的划痕的长度。利用halcon标定板,在透视畸变下进行标定。把畸变消除后,测量标准片的长度,很准确,是3cm。然后测量透视畸变图像上的划痕的长度。代码:* This program measures the length of scratches in world
* coordinates in a perspectively dis...
2020-03-30 17:58:37
Region特征分为三部分(1)基础特征:region面积,中心,宽高,左上角右下角坐标,等效椭圆长半轴短半轴方向,洞数及其面积,粗糙度,联通数,最大半径等。(2)开关特征:外接圆半径,内接圆半径,圆度,紧密度,长度,矩形度,凸型,偏心率,蓬松度,外接矩形的方向和两边长度等。(3)几何矩特征:二阶矩,三阶矩,主惯性轴等。12region_features(Regions : : Features...
2020-03-30 17:54:40
腐蚀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为1,则结果图像的该像素为1,否则为0。(收缩图像)膨胀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为0,则结果图像的该像素为0,否则为1。(扩大图像)region边界应用:原图 - 腐蚀后 = 内边界原图 - 膨胀后 = 外边界 1.gen_disc...
2020-03-30 11:48:59
勇哥今天突然想到一个要求:希望read_region读到的Region对象如何转回rectangle2的5个参数。看下面的代码,gen_rectangle2生成的region被保存起来,之后我通过read_region读回来,想得到当初gen_rectangle2的那5个参数常量。通过region_features算子取得的4个参数len1,len2,row,col其小数点后第一位有差别。取到的p...
2020-03-02 11:53:44
膨胀运算在数字形态中的作用是把图像周围的背景点合并到物体中。如果两个物体之间距离比较近,那么膨胀运算可能会使这两个物体连接在一起。膨胀对填补图像分割后物体中的空洞很有用。dilation1(Region, StructElement:RegionDilation:Iterations:)功能: 使用用户自定义的结构元素对区域进行膨胀。结果元素是一个区域region,可由这些算子区域产生:gen_c...
2020-03-02 11:51:34
一个字节表示一个像素是灰度图像,三个字节表示一个像素是RGB图像,一个字节8位位深度为8,三个字节位深度为24位。膨胀、腐蚀、开运算、闭运算针对二值图像(二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素不是0就是1,再无其他过渡的灰度值),腐蚀是减少像素,膨胀是增加像素。开运算:先腐蚀后膨胀(也减少像素),可以将两个物体分开,可以消除离散点和"毛刺",。闭运算...
2020-03-02 11:46:23
基本手法如下:1、采集图像2、预处理3、分割4、识别显示1、采集图像read_image (Image, ‘D:/**‘)get_image_size (Image, Width, Height)dev_open_window(0, 0, Width, Height, ‘black’, WindowHandle)2、预处理decompose3 (Image, Red, Green, Blue)tr...
2020-03-02 11:22:17
图像处理(image processing)用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。Blob分析(Blob Analysis)在计算机视觉中的Blob是指图像中的具有相似...
2020-02-25 09:23:46
visionPro8.3和谐过程记录一下吧,仅供个人学习使用哦。按下面步骤折腾一下后,只能用3天,不过是永远只能用3天,学习用是没问题啦。通过激活紧急许可证可以使用软件3天。初始你共有4个紧急许可。帮助菜单-〉“许可证”可以看到许可生效了,只有3天。如果软件过期了,你的紧急许可用完了,把下图这个liceseRestore.zip恢复,紧急许可又可以使用4次了!...
2020-02-22 11:20:34
博主在博客园的第一篇博客,以著名的张大牛标定法开始吧!具体标定原理就不详细说了,资料数不胜数,重点看张正友的原著《A Flexible New Technique for Camera Calibration》,搞明白这篇文章就足够了。好了,现在主要说一下标定过程,并附上博主自己调用Opencv接口编写的代码。1.拍摄棋盘格图片,8幅左右合适,文献里说n=8时,最小二乘法计算内参有稳定解。所以我就...
2020-02-22 09:48:16
1 亚像素理解 在相机成像的过程中,获得的图像数据是将图像进行了离散化的处理,由于感光元件本身的能力限制,到成像面上每个像素只代表附近的颜色。例如两个感官原件上的像素之间有4.5um的间距,宏观上它们是连在一起的,微观上它们之间还有无数微小的东西存在,这些存在于两个实际物理像素之间的像素,就被称为“亚像素”。亚像素实际上应该是存在的,只是缺少更小的传感器将其检测出来而已,因此只能在软件上将其近...
2020-02-22 09:29:51
用一张棋盘格来进行图像的像素精度计算,其计算程序是:#include"opencv2/opencv.hpp"
using namespace cv;
int main()
{
Mat srcimg = imread("6.bmp");
Mat gray;
cvtColor(srcimg,gray,CV_RGB2GRAY);
Size b...
2020-02-15 11:20:15
机器视觉处理软件:用来完成输入图像数据的处理,通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。 常见的机器视觉软件以C/C++图像库,ActiveX控件,图形式编程环境等形式出现,可以是专用功能的(比如仅仅用于LCD检测,BGA检测,模版对准等),也可以是通用目的的(包括定位、测量、条码/字符识别、斑点检测等)。 主流的机器视觉软件有:侧...
2020-01-19 21:08:57
勇哥在装完Visionpro8.3后,vs2013中的C#环境中工具中,就会出现Visionpro的各类控件。(但是在vs2017中却没有出现控件,可能是因为8.3版太老的原因吧?!)我们新建一个.net winform的工程,把CogRecordDisplay控件拖到窗体上面。然后敲入下面代码:using Cognex.VisionPro.ImageFile;
using System;
u...
2020-01-19 16:21:38
目录1 任务与目的2 方案总体设计3 C#界面设计4 OpenCVSharp功能实现5 打包与运行6 总结1 任务与目的本次任务是设计一个能够实现OpenCV部分功能的图像处理软件。目的在于方便图像处理人员在具体编写OpenCV程序前,提前能够对图像进行简单处理,进而帮助开发人员分析该如何对图像进行处理。使用C#对界面和逻辑进行开发。界面开发的工具有很多,例如使用C++与QT进行开发。OpenCV...
2020-01-19 16:11:56
最近接了个小毕设,要求用winform调用OpenCV识别一些简单的物件。网上关于调用DLL的文看的我一头雾水,而且也知道有类似OpenCV的C#接口的计算机视觉库,也就直接去了解这方面了。EmguCV应该是比较早且之前比较出名的C#版OpenCV,目前项目有507个stars。然而另一个日本人编写的类库已经有1200+的stars,并且在Visual Studio中下载量也已经超过了OpenCv...
2020-01-18 22:12:46
勇哥说下流程:(1) 启动应用程序向导。启动向导后的项目如下:下面的说明勇哥只谈重要的内容,其它的项目“下一步”即可。(2)这里你可以选择QuickBuild创建的工程,下面使用visionPro带的演示工程 : E:\Program Files\Cognex\VisionPro\samples\ApplicationWizard\QuickBuild2Jobs\QuickBuild2Jobs....
2020-01-18 15:50:02
勇哥之前写的一篇文章《Halcon学习(27-2)halcon测量技术:找线》里那段找线的代码,经常会报measure_pos的第4个参数报错。measure_pos的调用如下面这样: measure_pos (Image, MeasureHandle1, sigma, thresold, transition, select, RowEdge, ColumnEdge, Amplitude, Di...
2019-12-21 07:48:13
tuple_sort_index算子是返回按升序排序后的tuple元素的索引,官方说明如下:tuple_sort_index算子按升序对tuple的所有元素进行排序,
并返回已排序tuple的元素(相对于输入tuple-tuple)的索引。
作为前提条件,元组的单个元素必须是可比的。
因此,元组只能由字符串组成,或者只能包含(整数或浮点)数字。
在后一种情况下,整数和浮点数可以混合。请看下...
2019-12-20 19:42:56
hom_mat2d_to_affine_par算子全网只有下面这个解释:hom_mat2d_to_affine_par( : : HomMat2D : Sx, Sy, Phi, Theta, Tx, Ty)
功能:根据仿射变换矩阵(齐次二维变换矩阵)计算仿射变换参数
HomMat2D (输入参数):仿射变换矩阵
Sx (输出参数):x方向的缩放因子(如...
2019-12-15 21:46:57
首先先说明一下Hdevelop图形显示界面的坐标:基本上和其他环境中图像的坐标一样,左上角为(0,0),X轴为横轴,Y轴为纵轴,行Row指的是Y轴坐标,列Column指的是X轴坐标关于gen_measure_rectangle2:它是获得一个测量句柄Row, Column是矩形的中心Length1, Length2是矩形区域的长和宽的一半,关于区域的宽度,尽量在包住边缘的同时设置的越大越好,因为设...
2019-12-14 15:44:34
二维计量功能简单的说就是找几种几何形状 ,包括:圆形,椭圆形,矩形和线条 例如,从图一中找到3个圆和一个矩形。(图1)(图2)引用一下官方的一段说明:二维计量的基本原理
通常,对于2D度量,必须提供要测量的对象的位置,方向和几何形状的近似值。
在显示对象的图像内,这些近似对象的边界用于定位对象的真实边缘以适应几何形状的参数,
使得它们最佳地适合图像数据。
测量结果是优化的参数。计量模型用于...
2019-12-14 11:20:31
群里有人问题怎么测量下面的工件的尺寸?勇哥把原图处理了一下,供大家练习。下面代码是群中有人给出的一种思路,不完善。其主要思路是:。查找边缘Xld。分割Xld。循环判断每小段xld,通过其方向判断是不是我们需要的线条dev_close_window()
read_image (Image, 'C:/Users/hackpig/Desktop/QQ图片20191214110730.png...
2019-12-08 15:43:27
SimpleShapeChecker类,该类允许检测/检查一些简单的几何图形。在下面的示例程序中:Circles 圆Quadrilateral 四边形Known quadrilatera 已知四边形Triangles 三角形Known triangles 已知三角形这些功能貌似对于机器视觉来说没啥子用处,如果谈到找圆,估计这样干精度会有问题。-------...