自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 【解决视觉引导多个位置需要标定多个位置的问题】

* 以下只针对2D定位,就是只有X、Y、Rz三个自由度的情况。**假设一种情况,当视觉给机器人做引导任务时,零件有多个,分布在料框里,视觉需要走多个位置去拍,那么只需要对第一个位置确定拍照位,确定试抓位,其余的拍照位置通过只平移XY,零件特征偏移归0的方式确定,这种方式当两垛零件方向不一样的时候就不得不单独走9点。为了解决这个问题,提高调试效率,现在分享一种通过计算来偷懒的方法。通过这种方式,只需要9点标定一次,然后通过告知机器人当前拍照位坐标,计算零件在Base下的坐标。

2023-11-27 20:50:51 841

原创 OpenCV笔记整理【人脸检测之Harr级联分类器&&dlib库】

OpenCV提供的级联分类器有Harr、HOG、LBP这3种,这些分类器以XML文件保存,这里主要演示Harr检测人脸(OpenCV提供的分类器不仅限于检测人脸,还包括下表特征检测,当然OpenCV还支持训练自己的级联分类器,这里不做说明。免费的开源库,虽然测试速度不及前面的Harr级联分类器,但是准确率非常高。以上,如有错误,欢迎指正批评!上代码:通过摄像头检测人脸。上代码:检测图片中的人脸。

2023-06-02 20:49:32 2116

原创 分享一个轻量化的TCP\IP通讯库(Simple TCP)

简单又好用的TCP\IP通讯库--->Simple TCP

2022-09-29 19:25:06 2786 4

原创 康耐视InSight相机与西门子PLC关于Profinet通讯说明

康耐视智能相机Profinet通讯(粉丝可见)

2022-09-24 17:56:38 11849 3

原创 OpenCV笔记整理【绘制图形文字】

OpenCV 绘制图形文字

2022-09-17 19:19:40 2689

原创 OpenCV笔记整理【视频处理】

OpenCV【视频处理】

2022-08-06 16:36:00 1489

原创 OpenCV笔记整理【霍夫变换】

霍夫变换

2022-07-12 11:09:14 1338

原创 OpenCV笔记整理【模板匹配】

OpenCV 之模板匹配

2022-06-26 17:58:30 2664 2

原创 OpenCV笔记整理【傅里叶变换】

在Numpy和OpenCV中,实现傅里叶变换,包括高低通滤波的演示。。。

2022-06-18 20:42:03 877 1

原创 3D视觉引导机械手原理分析

前言: 1. 手眼标定的意义:2. 眼在手外:3. 眼在手上:下面以康耐视的3D点云相机距离,由于相机出厂默认校准过,所以以下忽略内参推导(后面有机会可以专门做一篇分享),只对外参部分做分享。1. 手眼标定的意义:所谓标定,就是求解坐标系之间相对位置关系的变换矩阵的过程。2. 眼在手外:这里我们可以讲A坐标系理解为机械臂的底座坐标系,B坐标系为相机坐标系,P点可以理解为需要引导抓取的物体。只要求出B在A上的变换矩阵,我们就可以知道零件在机械臂上的位置。上面可以看出,End在Board上、B

2022-04-13 00:08:31 3207

原创 OpenCV笔记整理【pyplot模块】

1. 介绍:Matplotlib 是 Python 的绘图库,是一个非常强大的 Python 画图工具,可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。引入pyplot模块: import matplotlib.pyplot as plt2. 使用plot函数绘制:plt.plot (x, y, ‘style’)x::绘制点的x坐标或者数组。y:绘制点的y坐标或者数组

2022-03-13 19:11:12 4621

原创 OpenCV笔记整理【直方图和掩模】

1. 直方图:直方图统计图像中各个灰度级出现的次数,横坐标为各个像素点的灰度级,纵坐标是具有该灰度级的像素个数。上面这个九宫格我们可以想象成一张图像,里面的数字代表当前像素的灰度等级。用图表显示:X轴代表统计次数,Y轴代表灰度级在实际处理中,X轴代表8位的256个灰度级[0-255],Y轴代表具有相应的灰度级的像素点的个数。示例: 统计这个纯白色背景下的黑色8的图像的直方图2. 绘制直方图:模块matplotlib.pyplot 提供了一个类似 MATLAB 的绘图框架,其中hist

2022-03-05 18:11:54 2709

原创 OpenCV笔记整理【图像轮廓】

相对于边缘检测,图像轮廓可以将边缘连接起来形成一个整体,其中包括目标的大小、位置、方向等信息。1. 查找轮廓:findContours()格式:contours, hierarchy = findCountours ( image, mode, method )返回值 contours:找到的轮廓contours下面包括若干个contours[i], 每个contours[i]代表一个轮廓,表示一个numpy.ndarray类型。获取总轮廓数:len(contours)获取当前轮廓的总像素

2022-02-19 19:24:16 2981

原创 OpenCV笔记整理【高斯金字塔&拉普拉斯金字塔】

图像金字塔是同一图像不同分辨率的子图集合,通过对原图的不断向下采样而产生,由高分辨率的图像产生低分辨率的近似图像。1. 高斯金字塔:不可逆采样向下采样import cv2o=cv2.imread("lena.bmp",cv2.IMREAD_GRAYSCALE)r1=cv2.pyrDown(o) # 对原图第一次向下采样r2=cv2.pyrDown(r1) # 对第一次采样的图像再次向下采样r3=cv2.pyrDown(r2) # 对第二次采样的图像再次向下采样print("o.shap

2021-09-24 20:06:23 1324 1

原创 OpenCV笔记整理【Canny边缘检测】

Canny边缘检测是一种使用【多阶段】边缘检测算法检测边缘的方法。主要分为以下步骤:1. 去噪:过滤噪声,使用滤波平滑一些纹理较弱的非边缘区域。2. 计算梯度:计算梯度的幅度与角度(PS: 2↑ 表示幅度为2,角度90°),值得注意的是,边缘和梯度始终是垂直的。3. 非极大值抑制:依次遍历像素点,判断当前像素点是否为周围梯度方向内的最大值。如果是最大值则保留,否则抑制(归零)。4. 使用双阈值确定边缘:剔除虚边缘,确定真正的边缘。经过前面的步骤,我们已经得到了一些边缘,但是这些边缘

2021-09-24 16:59:40 247

原创 Python中GUI设计之tkinter控件的使用(事件与绑定)

1. 事件绑定 bind(event,handler)除了前面提到的Button中绑定command的事件之外,还有一种使用bind进行绑定事件的方式介绍几个常用的鼠标事件:< Button-1> 单击鼠标左键< Button-3> 单击鼠标右键< Button-4> 鼠标滚轮向上滚动< Button-5> 鼠标滚轮上下滚动< Motion> 鼠标移动-< ButtonRelease-1> 松开鼠标左键< Dou

2021-09-22 09:35:06 3699 2

原创 Python中GUI设计之tkinter控件的使用(MessageBox控件)

1. tkinter 模块中有Messagebox模块,提供了针对不同场合的8个对话框showinfo(title,message,options) 显示一般提示消息showwarning(title,message,options) 显示警告信息showerror(title,message,options) 显示错误消息askquestion(title,message,options) 显示询问消息askokcancel(title,message,options) 显示确定或者取

2021-09-20 16:27:46 2106

原创 OpenCV笔记整理【图像梯度之Sobel & Scharr & Laplacian】

1. Sobel 算子:通过计算局部差分寻找边缘,计算得到一个梯度的近似值。滤波器(核):由一幅图像根据像素点(x,y)临近的区域计算得到另外一张图像的算法。滤波的目标像素的值等于原始像素及其周围像素的加权和,这种基于线性核的滤波,就是卷积。1. 计算水平方向偏导数的近似值计算公式为:P5的水平方向偏导数 = (P3-P1) + 2(P6-P4) + (P9-P7) 为了避免计算出负数造成信息丢失,需要时取绝对值。计算过程为:最左边的像素值 - 最右边的像素值,但是中间一行的权重是最高的,乘以2

2021-07-27 16:47:35 1468 1

原创 OpenCV笔记整理【形态学操作】

1. 形态学操作:形态学操作主要包括:腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽、黑帽。1. 腐蚀: 相对于黑底白字而言,将图像的边界点消除,使图像沿着边界向内收缩,也可以将小于指定结构体元素的部分去除。import cv2import numpy as np# 这里的演示中:0-黑色、1-白色img=np.zeros((5,5),np.uint8) # 创建一个5*5的矩阵,默认元组0img[1:4,1:4]=1 # 将横向1-4到纵向1-4全部置1kernel = np.ones((

2021-07-25 01:05:35 616 1

原创 Python中GUI设计之tkinter控件的使用(Scale尺度条和Spinbox控件)

1. 尺度条:一种图形接口输入功能,可以移动尺度条产生某一范围的数字。格式:Scale(父对象,options,…)options主要包括:digits: 尺度数值,读取时需要使用IntVar,DoubleVar或者StringVar变量类型读取。from_:尺度条范围的初始值。label:默认没有标签文字。如果尺度条水平,则标签出现在左上角。如果垂直则出现在右上角。orient:可以设置HORIZONTAL或者VERTICAL。repeatdelay:设置需要按住尺度条多久才能拖动尺度条

2021-07-17 16:46:01 1200 2

原创 Python中GUI设计之tkinter控件的使用(容器控件之Frame框架和LabelFrame标签框架以及TopLevel顶层窗口)

1. 框架的基本概念:这是一个容器控件,当我们设计GUI和复杂的时候,可以用考虑将一系列的Weight组织在一个框架内,这样会方便管理。2. 框架:Frame ,与C#中的Panel类似格式:Frame(父对象,options…)options:下面总结一部分常用的。borderwidth或者bd:标签边界宽度,默认2。height:框架的高度,单位是像素。relief:默认是relief=FLAT,可以控制框架外框。width:框架的宽度,单位是像素。cursor:设置当鼠标移动到控件

2021-07-10 18:49:02 2234 3

原创 Python中GUI设计之tkinter控件的使用(RadioButton选项按钮和CheckButton复选按钮)

1. 选项按钮:RadioButton1. 格式:RadioButton(父容器,options…)options:下面总结一部分常用的。activebackground: 光标在选项按钮上时的背景颜色。activeforeground: 光标在选项按钮上时的前景颜色。bg: 背景色。fg: 前景色。bd: 边界宽度,默认2个像素。command: 更改选项时,所引发的事件。indicatoron: 此项为0时,显示盒子选项按钮。padx: 默认1,可以设置选项按钮与文字的间隔。se

2021-06-07 00:05:14 1859 5

原创 OpenCV笔记整理【二】

接前面1. 阈值处理: threshold()import cv2import numpy as np# 创建一个8位的4行5列的矩阵,元素0-255之间随机img=np.random.randint(0,256,size=[4,5],dtype=np.uint8)# thrshold(图像,# 阈值,# 当后面的分割类型为Binary或者Binary_Inv时,这里表示最大阈值,# 分割类型)t,rst=cv2.threshold(img,127,255,

2021-06-06 16:14:07 186

原创 OpenCV笔记整理【一】

1. 简介:OpenCV的全称是 Open Source Computer Vision Library,是一个跨平台的开源计算机视觉库。由Gary Bradsky于1999年在英特尔发起并创立。这里使用的OpenCV版本为:4.5.2查看当前的Python版本的OpenCV版本:# 导入OpenCV模块import cv2# 打印版本信息print(cv2.__version__)2. 基本语法:读取一张图片并显示:# 导入模块import cv2# 读取图片# cv.IMR

2021-05-28 17:28:52 561

原创 Python中GUI设计之tkinter控件的使用 (Button按钮、Entry文本框)

1. 功能按钮:格式:Button(父对象,options,…)父对象:表示当前按钮建立在哪一个窗口下。options:下面总结一部常用的。bg或者background:背景色fg或者foreground:前景色command:单击按钮时,执行此方案font:字体height:字符高度width:字符宽度image:按钮上的图片padx:设置文字与按钮左右间隔pady:设置文字与按钮上下间隔state:NORMAL表示启用按钮,DISABLED表示禁用按钮text:字符Bu

2021-05-21 22:06:56 4034 13

原创 康耐视InSight相机实现ModBusTCP通讯详解

1. 实验准备:智能相机:本次实验使用的相机型号为:IS8200M,支持目前最新的InSight6.13版本固件,所以相机的固件也升级到了最新的6.01.03,这里建议固件版本最好使用最新的。注意,5.3以下的版本不支持Modbus TCP通讯,所以如果最高支持不到5.3的相机,请选择其他通讯方式。软件(InSight)版本: 6.13。 官网下载链接:点击下载Modbus Poll 测试软件,网上一堆,请自行搜索下载。2. 相机配置:硬件连接部分可以查询我的博客:点击 这里不做说明

2021-05-05 23:36:59 7311 8

原创 Python中GUI设计之tkinter控件的使用(窗体和Label)

1. 认识GUI和tkinterGUI是Graphics User Interface的简称,就是图形用户接口。tkinter是一个开放源码的图形接口开发工具,选择tkinter的主要原因是,tkinter是支持Window、Linux、Mac OS的,有了这个GUI工具,我们就可以使用Python创建属于自己的窗体程序了。首先引入模块并查询tkinter版本# 导入模块from tkinter import *# 查询tkinter版本import tkinterprint(tkinte

2021-04-24 00:01:20 878 3

原创 康耐视InSight相机的TCP\IP通讯设置以及字符命令触发

1. TCP\IP通讯智能相机既可以作为TCP\IP服务器存在,又可以作为TCP\IP客户端,这里分别介绍如何在电子表格模式下,设置InSight相机的客户端和服务器下的收发数据。2. 客户端创建客户端设备:在电子表格中分别插入一个EditString控件用于输入服务器IP地址。然后插入EditInt控件用于插入Port端口号。插入TcpDevice控件。然后将TcpDevice控件中的HostName绝对引用至前面的EditString输入框。接着将TcpDevice控件中的Port绝对

2021-02-25 23:15:51 11744

原创 康耐视InSight相机实现视觉引导机械手&视觉校准&九点标定

1. 校准1. 非线性校准的作用:主要是为了消除镜头的径向畸变、以及相机非垂直安装引起的透视变形;2. 校准工具:校正板&标定板(这里只介绍前2种,因为InSight相机不支持DataMatirx标定板)3. 标定板的选择标准:需要根据项目现场的FOV确定标定板尺寸和单元大小棋盘格标定板:获取的图像必须包含至少9个完整图块。采集图像中的图块大小必须至少为15x15像素。网格标定板:点的直径必须在10到40像素之间。网格必须包含不少于16个点且不超过2000个点。点中心

2021-02-10 01:21:31 14649 11

原创 Async和Await异步函数的示例分享

Async异步是C#5.0时代引入的本文主要分享,有返回值和无返回值的async异步函数的编写方式,以及await的使用。1. 同步调用这里模拟了两个耗时任务AsyncMethod1和AsyncMethod2,每个任务耗时5秒钟。 public static void AsyncMethod1() { Thread.Sleep(5000); Console.WriteLine("This is method 1" + "\t" +

2021-01-09 00:30:13 395 1

原创 C#中针对NModbus4库文件的简单使用分享(Modbus Tcp协议)

1. Modbus Tcp协议:ModBus Tcp是基于TCP/IP的报文协议,采用主\从方式通信,但是主从之间的端口是固定的:502ModBus地址:由5位数字组成(PS:40001-49999表示HoldingRegister),包括起始数据类型代号,以及后面的偏移地址2. 实验目的:实现主机\从机对任意线圈和寄存器的写入和读取。这里用到的Dll名称是:NModbus4。 可以在NuGet或者GetHub上下载到。3. 主机端:Slave上代码:// Modbus TCPu

2020-12-25 00:53:52 30336 39

原创 C#中通过Socket实现一个简单的TCP\IP服务器和客户端的搭建

TCP\IP 是什么?TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。Socket 是什么?Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。1.

2020-11-15 17:38:35 4339 5

原创 C#中使用反射获取对象成员&动态创建对象

这里分享两种使用反射的用途:① 在未知一个类成员的时候,通过反射得到该类的成员。② 动态创建一个对象。1. 通过反射获取类成员、赋值:首先自定义一个类,假设我们不知道这个类中的成员有哪些 public class Person { public string Name { get; set; } public void SayHi(string name) { Console.WriteLine("Hi! I am {

2020-10-19 00:37:13 4471 1

原创 VisionPro中使用工业相机采集图像的两种方式分享

在VisionPro中,使用工业相机采像的方式主要有两种:通过调用CogAcqFifoTool工具的方式取像通过实现 ICogAcqFifo接口获取图像1. 通过CogAcqFifoTool工具取图:① 连接相机到PC② 修改相机和PC至同一网段,修改相机或者本地网卡IP都可以③ 打开VisionPro,从工具栏拖入CogAcqFifoTool工具双击打开,然后绑定相机,设置相机参数查看实时图像,如果图像出现异常,或者采像非常失败,一般需要设置GigE栏④ 设置完毕,保存当前Co

2020-10-17 18:10:12 16471 9

原创 康耐视InSight中电子表格模式下图案匹配工具FindPatterns的使用分享

1. 准备工作:打开InSight软件,选择电子表格视图。修改仿真器:以下所有的程序演示都是在仿真上进行的,请预先将仿真器型号改为标准(见:https://blog.csdn.net/qq_34699535/article/details/108945036)。回放图片:找到 “图像” —> “记录/回放选项” —> “回放” —> “回放文件夹”,然后指定回放的图片目录,点击"确定"。通过胶片选择图片回放:新建并保存作业:新建一个空白作业,然后保存到指定的地

2020-10-16 19:51:36 6093 5

原创 康耐视InSight软件电子表格视图功能介绍

1. 界面预览:这里我们将整体界面大致分为7个大的部分,当然布局可以按照自己的习惯自由拖放,这里只展示默认视图。各部分的功能说明:① 菜单栏:这里对关键几个功能做介绍,没有提到都不是很重要查看:当界面上的某一部分没有显示时,可以通过查看菜单重新打开。传感器:帮助–InSight浏览器帮助:甚至包括了PLC以及机器人端的配置方式② 快捷功能区: ③ InSight网络:显示当前可连接状态的相机或者仿真,如果你的相机已经连接本机,但是没有显示在这里,需要在菜单栏:系统>&gt

2020-10-07 17:03:56 7269 2

原创 康耐视InSight软件的安装与软件激活方式分享

前言:1. 下载软件:InSight软件是COGNEX公司开发的,针对于工业智能相机的IDE工具。智能相机的配置,编程都需要在此软件上进行。软件可以免费在康耐视官网下载,但是2020年以后需要注册邮箱才能下载激活,为了方便大家使用,我已经将最新版本的安装包上传云盘,有需要的朋友可以自行下载:链接:https://pan.baidu.com/s/1VpzE6hgshIHjtGh63u3FVw提取码:bft3官网下载地址:https://support.cognex.com/zh-cn/down

2020-10-07 11:31:46 18419 28

原创 康耐视InSight相机的连接与仿真的使用

仿真的作用:在InSight软件中,可以直接对已经连接到PC 的相机进行管理。但是如果在生产环境中,也就是相机工作状态下,如果需要对相机的程序做修改,则需要将相机Offline,但是一旦相机处于Offline状态,它与工厂的控制系统连接将会断开,这在大多数生产现场都是不允许的。所以这里我们需要用的仿真,简单理解,就是在线下将程序修改完成,然后上传至视觉系统中。相机供电/连接PC智能相机的供电分两种:不同系列的视觉系统供电方式有差异,具体请查阅手册① POE电源供电② 开关电源供电在In

2020-10-07 00:46:08 12902 4

原创 VsionPro中分享CogBlobTool斑点工具的使用详解

1. 斑点工具作用探测并且分析图像中的二维形状,斑点通过辨别处于用户定义的灰度范围内的不同的像素组,来查找对象。简单理解就是将一幅灰度图像,根据用户选定的灰度等级进行分割。一般用在没有特定的图形轮廓,但是可以通过明暗提取特征的应用,比如:2. 工具的部署流程:3. 斑点工具的使用:添加CogBlobTool工具到Job中打开CogBlobTool工具编辑极性:黑色背景中检索白色特征,或者白色背景中检索黑色特征阈值:用于分割灰度的限定值模式:①固定阈值:固定的阈值分割缺点是

2020-10-04 16:01:50 10546 4

原创 VisionPro中分享CogPMAlignTool图像匹配工具的使用详解_史上最全

PMAlign工具: 此工具可用于训练样板,然后使用在连续的输入图像中搜索样板。可指定执行样板训练或样板搜索时要使用的 算法类型,并可选择利用图像还是利用形状模型集合创建已训练样板。输入图像内的可选搜索区域可限制样板搜索的范围。目的: 这里主要分享一下,如何在一个ToolBlock中使用PMAlign工具对图像做训练,以及参数的修改,最后将工具的搜索区域打印出来。1. 输入图像由于这里没有接相机,所以图像来源我们选择图像库文件:首先打开一个作业CogJob,然后选择图像,可以是单个图像,也可以是多个

2020-09-25 01:11:11 20908 16

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除