自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (4)
  • 收藏
  • 关注

原创 C#窗体应用程序崩溃解决方法总结

一、内存不足内存是最常见的导致程序崩毁的原因,常用解决方式有如下几种。算法中声明的占内存较大的全局变量或类中声明的私有变量在循环或运行结束后需进行释放,手动设置Dispose(),然后GC.Collect()。对一些重复调用的类避免多次实例化。对于高并发程序,需要结合线程处理方法进行解决。二、未知原因崩溃对于此类情况,可以添加未处理异常的事件。static void Main(string[] args) { AppDomain.CurrentDomai

2021-08-26 20:49:17 4638

原创 C#中泛型的相关知识点总结

概念泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。优点:1.使用泛型类、方法,我们可以极大提高代码的重用性,不需要对类型不同代码相同(仅类型参数不同)的代码写多次。2.创建泛型类,可在编译时创建类型安全的集合3.避免装箱和拆箱操作降低性能,在大型集合中装箱和拆箱的影响非常大.常见的泛型类型包括例子小知

2021-08-22 22:20:45 189 1

原创 Halcon阈值分割方法简析

1. 基于直方图的自动阈值分割1.1 例程详解dev_close_window ()read_image (Aegypt1, 'egypt1')get_image_size (Aegypt1, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowID)set_display_font (WindowID, 14, 'mono', 'true', 'false')dev_set_colored (6)dev_cl

2021-07-19 20:15:01 1240

原创 基于C#的ico图标制作与应用

一、简介ICO是什么ICO 是 Windows 开发的一种图标格式,是一种可以存储多张图案、多尺寸、多色板的图标文件。

2021-06-21 10:07:49 2717 1

原创 C#中HP-Socket通信组件详解

概念

2021-05-23 23:54:13 4932 2

原创 C#中不常见的运算符功能汇总

介绍?可空类型修饰符引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。?.NULL检查运算符,用于判断对象是否为空并获取对象的某个属性的值,可以代替if判断,简化代码。?:三元运算符,a?b:c 表示如果表达式a为true,则返回b,否则返回c。这是省略if{}else{}的简单形式。??空合并运算符,用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。例如:a??b 当a为null时则返回b,否则返回a本

2021-05-12 23:20:47 165 1

原创 基于VS2019的Eigen库安装详解

概念Eigen是一个C++开源线性代数库。提供有关矩阵的的线性代数运算,解方程等功能。

2021-05-04 19:46:58 2132 5

原创 C#常见编码方式总结

概念UnicodeUnicode 是一种标准的编码系统,用于表示几乎所有语言的字符。 每个字符使用 0 和 0x10FFFF 之间的唯一整数 码位 进行编码。 Unicode 字符串 是由零个或更多码位组成的序列。编码是一个将一组 Unicode 字符转换为一个字节序列的过程。解码是一个反向操作过程,即将一个编码字节序列转换为一组 Unicode 字符。UTF-8,它将每个码位表示为一个由 1 至 4 个字节组成的序列。UTF-16,它将每个码位表示为一个由 1 至 2 个 16 位整数组成的序列

2021-05-02 19:29:06 2944 1

原创 C#中数据流(文件流、内存流、网络流等)相关知识点梳理

基本概念C#中数据流的应用体现在方方面面,现在针其常用的几种类进行一次梳理。数据流一般包括FileStreamFileStream类主要用于读写磁盘文件。在这里插入代码片NetWorkStreamNetWorkStream类是专门用来处理服务器与客户端通信的流。它在网络编程中经常使用,主要是用来处理类似Socket、TcpClient和TcpListener这些类中得到的流。MemoryStreamMemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,

2021-05-01 20:49:42 1745 1

原创 C#中json序列化与反序列化

json格式概念JSON(JavaScript Object Notation) 是一种轻量级的数据传输格式,其采用完全独立于语言的文本格式,使JSON成为理想的数据交换语言。json由两种格式组成。1.名称/值”对的集合,可以一起创建多个"名称 / 值对"。{ “firstName”: “1”, “lastName”:“1”, “qq”: “1234567” }2.值的有序列表,一般被理解为数组(array)。当需要表示一组值时,只需将多个带花括号的记录分组在一起。{ “num”: [{ “

2021-04-25 20:20:00 773 2

原创 Windows10下安装QT5.14.2并用VS2019打开

实用的QT安装教程

2021-04-21 20:50:11 2441 3

原创 Windows10 VS2019下使用CMake3.20.1打开PCL1.11.0程序

认识CMake

2021-04-18 16:31:55 814 1

原创 史上超全halcon常见3D算子汇总(一)

种类我按照功能将halcon3D算子分为读写、生成点云、复制、滤波、分割、拟合、测量、显示以及变换等几个种类。下面会依次对每个算子的功能进行总结,对于比较难的算子,会单独进行讲解。读写生成点云复制滤波分割拟合测量显示变换...

2021-04-16 18:41:56 5101 2

原创 Halcon中visualize_object_model_3d算子详解

想法

2021-04-12 21:14:21 3635 1

原创 C#中数据类型及其转换知识点汇总

概念C#中数据类型分为两大类,分别是值类型和引用类型。值类型变量是从类 System.ValueType 中派生出来的,当声明一个值类型变量时,系统分配内存来存储值。整形浮点型float占用4字节,32bit:1bit(符号位) 8bits(指数位) 23bits(尾数位)。初始化时,应使用后缀 f 或 F 初始化浮点型变量,否则会使double值存储到 float 变量中。loat和double的精度是由尾数的位数来决定的,float:2^23 = 8388608,共七位。参考文章:C

2021-03-31 19:13:22 200 1

原创 C# —— 序列化与反序列化

概念

2021-03-29 18:29:43 1547 3

原创 halcon自标定

概念该算法可以在不使用标定板的情况下计算相机内参,从而进行畸变校正,适用于畸变较大的情况。算法很简单:1.求出图像边缘应进行分割。2.基于筛选线段的自标定radial_distortion_self_calibration。3.得到标定区域。4.根据指定的径向畸变确定新的相机参数change_radial_distortion_cam_par。5.改变图像的径向失真,从而得到新图像。需要注意:1.保证在图像的四周边缘有足够的直线线段2.保证运行环境内存>=2G。例子read_im

2021-03-23 20:06:22 1004 2

原创 C#中List列表与Datagridview的用法

初始化创建空列表 List<int> List = new List<int>();2.使用var类型的前提是预先知道变量的类型,会根据变量赋值来判定属于什么类型,但此种赋值方法只能给局部变量赋值。var list1 = new List<string>();具体见:C#列表List常用属性和方法...

2021-03-17 18:53:59 2973 1

原创 基于C#的TCP/IP协议应用(一)

一、背景与概念1.标准以太网以太网是美国Xerox(施乐)公司的Palo Alto研究中心于1975年研制成功的,其核心技术起源于ALOHA网。目前以太网是指符合IEEE 802.3标准的局域网(LAN)产品组,其中IEEE 802.3是一组电气与电子工程师协会(IEEE)标准,用于定义有线以太网媒体访问控制的物理层和数据链路层,说明了配置以太网网络的规则,以及各种网络元件如何彼此协作。以太网分为标准以太网:早期的10Mbps以太网称之为标准以太网,是一种总线型局域网,由同轴电缆、网卡(网络适配器)组成

2021-03-14 10:33:47 4046 1

原创 C#中Console.ReadKey()与ConsoleKey的一些用法

1.控制台程序不让窗口闪过对于控制台程序,Console.ReadKey()可以使窗口停留一下,直到点击键盘任一键为止。2.通过按键进行选择key = Console.ReadKey(true).Key; if (key == ConsoleKey.S) { Console.Write("Input the message: ");

2021-03-12 08:32:18 4707 1

原创 C# 接口详解

概念找到非常好的一个文章,见下面链接:C# 接口《通俗解释》

2021-03-10 18:42:14 414 1

原创 C# 回调函数详解

回调和回调函数是什么软件模块之间总是存在着一定的接口,回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口。对于一般的结构化语言,可以通过回调函数来实现回调。回调函数是一个函数或过程,是一个由调用方自己实现,供被调用方使用的函数。对于C和C++来说,一般通过函数指针实现调用。对于C#来讲,声明的委托事件就像一个指针,通过事件变量来调用另外的方法,将该方法作为参数传递给另一个方法。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机怎么实现?通过声明委托来实现回

2021-03-10 18:39:02 17719 7

原创 Basler相机SDK相关问题收集与知识汇总

1.心跳时间导致报错此心跳非彼心跳,相机心跳是指过通过设置一个时间用于监测相机和网卡的连接,如果超过这个时间,相机就会释放跟网卡的连接,进入一种允许相机被再次连接的状态。但此方式会导致相机SDK报错,经常显示在使用中,无可用连接,如何解决?1.干等。不可取2.断电或者重新连网。3.将此心跳时间改短。basler.SetHeartBeatTime(18000);改为basler.SetHeartBeatTime(1000);2.多程序打开相机保错只能用一个程序打开相机,关掉就好了。.

2021-03-08 13:57:15 1648 5

原创 Opencv—— 拟合直线

概念最小二乘法多项式直线拟合,根据给定的点,求出它的函数y=f(x),当然求得准确的函数是不太可能的,但是我们能求出它的近似曲线y=φ(x)原理假设有点 , I = 1,2,3,……n,求近似曲线y=φ(x),并且使得y=φ(x)与y=f(x)的平方偏差和最小,偏差...

2021-02-27 19:04:52 1936 1

原创 C# —— 进程与线程的理解

定义进程:进程是资源(CPU、内存等)分配的基本单位,具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个实体,是独立运行和独立调度的基本单位(CPU上真正运行的是线程)。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。区别进程拥有自己的资源空间,每启动一个进程,系统就会为它分配地址空间;而线程与CPU资源分配无关,多个线程

2021-02-23 20:00:52 2924 3

原创 Halcon —— 边缘检测算子详解

一、算子介绍1.1 种类halcon内常用的边缘检测算子包括如下几种:1.edges_image: 提取2D 图像边缘2.edges_sub_pix:提取2D图像亚像素边缘3.edges_object_model_3d :提取3D图像边缘4.edges_color和edges_color_sub_pix:提取彩色图像边缘1.2 区别edges_image可选择多种边缘检测算法来提取物体边缘,其与亚像素边缘算子的区别在于edges_image提取是以像素为单位的边缘特征,edges_sub_p

2021-02-10 17:31:13 15051 5

原创 Halcon例程详解(基于卡尺工具的匹配测量方法) —— measure_stamping_part.hdev

前言1卡尺工具介绍Halcon中的Metrology方法即为卡尺工具,可用来拟合线,圆,这种方法对于目标比背景很明显的图像尺寸测量是很方便的,不需要用blob进行边缘提取等,但缺点也很明显,需要目标位置基本不变才行。2匹配方法概念HDevelop开发环境中提供的匹配的方法有三种,即Component-Based、Gray-Value-Based、Shape-Based,分别是基于组件的匹配,基于灰度值的匹配和基于形状的匹配,本文所用的例程方法为基于形状的匹配。例程详解**模型的名字为基于形状的

2021-02-09 18:38:03 5253 4

原创 Halcon —— 图像像素类型与转换

图像类型就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。‘byte’ 每像素1字节,无符号 值范围: (0到255)‘int1’ 每像素1字节,有符号 值范围: (-128到127)‘

2021-02-06 18:01:16 9606 4

原创 C# 事件详解附实例分析

一、定义事件是两个对象间发布消息和响应后处理消息的过程,通过委托类型来实现的。事件的机制被称为发布-订阅机制,其算法过程为:首先定义一个委托类型,然后在发布者类中声明一个event事件,同时此类中还有一个用来触发事件的的方法。声明订阅者类,其中定义一个被调用方法,再定义一个可以增加,删除被调用方法的方法。最后在主函数中完成对方法的调用。二、示例举个简单的例子,我委托女朋友给我买东西,那我需要定义一个发布者类Me和一个订阅者类Girlfriend。public class Me//发布者是我啦

2020-12-23 16:54:02 2140 1

原创 Halcon例程详解(激光三角系统标定)—— calibrate_sheet_of_light_calplate.hdev

前言1 激光三角测距激光三角测距法原理很简单,是通过一束激光以一定的入射角度照射被测目标,激光在目标表面会产生漫反射,在另一角度利用透镜对反射激光汇聚成像,光斑成像在CCD(Charge-coupled Device,感光耦合组件)位置传感器上。当被测物体沿激光方向发生移动时,位置传感器上的光斑将产生移动,其位移大小对应被测物体的移动距离,因此可通过算法设计,由光斑位移距离计算出被测物体与基线的距离值。由于入射光和反射光构成一个三角形,对光斑位移的计算运用了几何三角定理,故该测量法被称为激光三角测距法。

2020-12-16 19:36:45 4463 7

原创 C# —— 深入理解委托类型

一. 我自己的理解

2020-12-10 20:09:03 1933 3

原创 Halcon例程详解 (深度图转换为3D图像)—— xyz_attrib_to_object_model_3d

一、前言深度图向点云图进行转换是进行3D检测项目时会遇到的问题,halcon里也有针对此问题的相关例程,下面对此例程进行分析。通过了解

2020-12-07 16:07:08 10284 5

原创 工业相机(3D)主要参数详述

一、前言怎么正确的对相机选型是一个视觉工程师必须具备的技能,而选型前必须对其内部参数了如指掌。工业相机是一种比较复杂的产品,其参数很多,每个参数可能会有不同的标准,下面对主要的参数会做比较详细的阐述。二、参数详述2.1 相机分辨率与像元分辨率作为相机的基本参数之一,是指传感器(CCD或CMOS)芯片靶面排列的像元数量。这里讲一下像元(像素)的概念:物理概念上像元是指芯片上的感光元件或光敏元件,其尺寸为芯片尺寸/对应方向的像素数。例如1/2inch芯片对角线为8mm,对应勾股定理,长宽尺寸为6.4m

2020-11-28 18:25:35 9063 3

原创 Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev

一、前言在我的工业相机专栏里已经将相机标定涉及到的理论部分讲解完毕,为什么要标定以及标定要求出什么参数呢,用一个Halcon 例程来帮助理解。这个例程是比较经典的标定程序,基本将标定过程讲的比较清楚,用的标定图像是系统自带的,如果想自己做可以在Halcon助手选项里拍照生成。二、代码* 设置窗口和字体ImgPath := '3d_machine_vision/calib/'dev_close_window ()dev_open_window (0, 0, 640, 480, 'black',

2020-11-24 20:14:09 4375 2

原创 相机标定(三) —— 畸变校正

一、定义

2020-11-20 11:01:35 7027 1

原创 相机标定(二)深入理解四大坐标系与其变换关系

一、前言视觉系统一共有四个坐标系:像素平面坐标系(u,v)、像平面坐标系(图像物理坐标第(x,y)、相机坐标系(Xc,Yc,Zc)和世界坐标系(Xw,Yw,Zw),如下图所示。每种坐标系之间均存在联系,那么如何通过图像像素坐标定位到世界坐标系的坐标,需要通过相机标定来解决,其中关键的算法部分在于坐标系转换,而变换则需要通过齐次坐标的表示方式来完成。二、坐标系变换2.1像素坐标系和图像坐标系的变换像素坐标就是像素在图像中的位置。像素坐标系是建立在图像中的,需要和相机坐标系进行变换,其单位为像素。其的

2020-11-19 20:02:25 6008 5

原创 工业相机基础知识详述 —— 焦平面,像平面,弥散圆,光圈,分辨率,景深,接口,靶面尺寸

一、焦平面想到焦平面,很多人不由自主就想到不就是焦点所在的垂直于光轴的平面吗?其实其背后隐藏这更多的东西。1)焦点不止一个对于一般拍摄场景来说,光通过一个凸透镜,汇聚不到一个点,越靠近中轴线的光束聚焦得越远,越靠近透镜边缘的光聚焦得越近,这是光学误差的一种,叫球差,如下图所示。只在理想情况下,光从无限远汇聚到凸透镜,才会汇聚一点。第一焦平面:过第一焦点且垂直于系统主光轴的平面称第一焦平面,又称前焦面或物方焦面,一般为边缘光束汇聚的焦点;第二焦平面:过第二焦点且垂直于系统主光轴的平面称第二焦平面

2020-11-18 11:19:26 22377 16

原创 相机标定(一) —— 深入理解齐次坐标及其作用

一、什么是齐次坐标和齐次坐标系齐次坐标数学好几年基本没碰了,齐次坐标的理解是一个相机标定问题的难点。单从定义上来讲,齐次坐标(投影坐标)就是用N+1维来代表N维坐标(点和向量),也可说用齐次坐标来表示笛卡尔坐标,具体的数学表达式可以这样写:在直角坐标系点坐标(x,y)末尾加上一个额外的变量w,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有X = x/wY = y/w这也就解决了笛卡尔坐标系无法表示无穷远点的问题,按照人的视觉,两条平行线在无穷远处会相交,采用直角坐标系无法对这一现象进

2020-11-17 14:55:41 7582 3

原创 Opencv4.5-C++ 摄像头画面镜像显示及文件保存

前言想试下新买电脑的摄像头好用不,就随便写了个摄像头调用程序,实现了镜像和图片截取保存。代码#include <iostream> #include <opencv2/stitching.hpp>#include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <

2020-11-16 15:36:13 1155 1

原创 C++和Opencv4.5 实现全景图像拼接

前言最近刚下了最新版的opencv4.5,急不可待的试下操作,就用了opencv自带的Stitcher类拼接下图像,结果傻眼了,程序显示Stitcher没有createDefault成员,看了好久,终于找到了解决方法。Stitcher原理Stitcher类程序流程:对图像特征点进行检测,默认是 surf(Speeded Up Robust Features)算法对图像的特征点进行匹配得到正确的图像序列。求旋转矩阵拼接环境OpenCV:4.5.0VS:2019 C++平台:Wind

2020-11-14 17:10:17 5546 7

qt-vsaddin-msvc2019-2.7.1.vsix

qt最新扩展控件,适用于VS2019

2021-04-22

DALSA学习笔记.docx

自己总结的Dalsa相机SDK学习笔记,希望对大家有点用。

2021-03-11

SmartRay DevKit_5.4.0.74.exe

smartray相机软件,需要的下载。

2020-11-18

空空如也

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

TA关注的人

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