自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_656236576的博客

一个菜鸡的救赎之路

  • 博客(109)
  • 资源 (3)
  • 收藏
  • 关注

原创 3D处理关键点检测之ISS(内蕴形状特征)

ISS(Intrinsic Shape Signatures)是由Yu Zhong于2009年提出的一种三维形状描述子,用于描述局部或者半局部区域的点云,局部区域可以理解为以一个点云中某点为球心,以一定半径构成的可以包含多个内点的球形区域,半局部则是半个球形区域。ISS可用于不同视角点云的配准,快速姿态估计,三维物体识别与检索。该方法具有稳定,可重复性,信息丰富的特点。

2024-06-12 10:08:11 154

原创 get_object_model_3d_params-----返回3D对象模型的属性。

如果3D对象模型是圆柱体(参见gen_cylinder_object_model_3d),则返回值是中心[x_center, y_center, z_center]的(x-, y-, z-)坐标,圆柱体主轴[x_axis, y_axis, z_axis]的(x-, y-, z-)方向,以及圆柱体的半径[radius]。如果3D对象模型是sphere或box类型的基元(参见gen_sphere_object_model_3d或gen_box_object_model_3d),则返回对象模型的中心点。

2024-06-11 08:55:42 1030

原创 rigid_trans_object_model_3d----------对3D对象模型应用刚性3D转换

rigid_trans_object_model_3d如果在pose (N:1)中只传递一个变换矩阵,则用相同的姿态转换一个或多个3D对象模型。rigid_trans_object_model_3d对3D对象模型应用刚性3D变换,即旋转和平移,并返回转换后的3D对象模型的句柄。转换由Pose中给出的姿态来描述,形式如下,其中mcsi表示输入对象模型的坐标系,cst表示转换后模型的坐标系,例如,场景的坐标系(请参见转换/姿态和“解决方案指南III-C - 3D视觉”)。

2024-06-11 08:20:43 537

原创 协方差矩阵,残差,误差

2024-06-11 08:17:50 92

原创 halcon3d算子之get_circle_pose详解

get_circle_pose -从圆的2D投影角度确定圆的3D姿态。

2024-06-05 11:10:09 1016

原创 halcon3D入门知识

2024-06-05 10:24:41 105

转载 halcon3d算子总结(简单描述算子)

halcon3d包含以下几个模块。

2024-06-05 10:14:16 25

原创 halcon算子之prepare_object_model_3d详解

为此,必须设置通用参数’xyz_map_width’或’xyz_map_height’,以指示点云是按行排序还是按列排序,并定义图像尺寸(参见下面的’xyz_map_width’和’xyz_map_height’)。这在使用sample_object_model_3d、surface_normals_object_model_3d或准备3D对象模型进行基于表面的匹配(例如,平滑、去除异常值和减少域)时尤其有益。图像的高度自动计算。在distance_object_model_3d的文档中有更详细的描述。

2024-06-05 09:57:31 725

原创 halcon算子register_object_model_3d_pair详解

为此,必须设置通用参数’xyz_map_width’或’xyz_map_height’,以指示点云是按行排序还是按列排序,并定义图像尺寸(参见下面的’xyz_map_width’和’xyz_map_height’)。这在使用sample_object_model_3d、surface_normals_object_model_3d或准备3D对象模型进行基于表面的匹配(例如,平滑、去除异常值和减少域)时尤其有益。图像的高度自动计算。在distance_object_model_3d的文档中有更详细的描述。

2024-06-05 09:49:35 681

原创 halcon算子详解之find_surface_model

对于每个发现的表面模型实例,其姿态都是在场景坐标系中给出的,因此姿态的形式是,其中scs表示场景的坐标系(通常与传感器的坐标系,相机坐标系相同),mcs表示模型坐标系(这是一个3D世界坐标系),参见变换/姿态和“解决方案指南III-C - 3D视觉”。注意,参数’pose_ref_dist_threshold_edges_rel’和’pose_ref_dist_threshold_edges_abs’中只有一个应该被设置。请参阅上面的’max_overlap_dist_rel’,以获得该参数效果的描述。

2024-06-05 09:45:10 1009

原创 halcon算子详解之Create_surface_model

减小该值会导致更精确的姿态优化,但会导致更大的模型和更慢的模型生成和匹配。例如,3D对象模型可以先前使用read_object_model_3d从文件中读取,或者使用xyz_to_object_model_3d创建。为了减少嘈杂的3D数据,你可以,例如,使用smooth_object_model_3d或simplify_object_model_3d。为此,找到与模型本身非常相似的姿态,即只能通过模型的非常小的属性(如钻孔)来区分的姿态,并且可以通过find_surface_model进行混淆。

2024-06-05 09:33:01 563

转载 PnP算法详解

PnP算法详解

2024-04-29 14:18:20 299

原创 最小二乘法

最小二乘法

2024-04-28 10:02:04 163

原创 罗德里格斯公式(将矩阵转换成一个向量)

罗德里格斯公式(它为旋转向量的计算和旋转矩阵的表示提供了一种简洁高效的方式。)

2024-04-28 09:56:02 125

原创 克莱姆法则

克莱姆法则

2024-04-28 09:52:20 290

原创 范德蒙行列式(公式推导)

范德蒙行列式公式推导

2024-04-28 09:49:07 110

原创 贝叶斯(Bayes)法则

贝叶斯法则

2024-04-28 09:43:16 234

原创 halcon学习记录之亚像素轮廓

在图像处理中,二次或多次插值算法可以在相邻像素的位置之间插入虚拟像素,从而得到更丰富和细致的图像信息。这些虚拟像素的值是通过对相邻实际像素值的计算获得的。这些算法通过考虑相邻像素之间的灰度或颜色变化,以及它们的空间关系,生成更精确的图像表示。通过引入亚像素,可以在图像中捕捉到更多的细节,提高测量的精度。亚像素是在数字成像领域,由于物理上已经无法在相邻像素之间增加更多实际的感光单元,通过插值算法引入虚拟像素以在图像中提高测量的精度。轮廓的多边形逼近指的是:使用多边形来近似表示一个轮廓。

2024-04-10 09:56:04 256

原创 const与&修饰函数形参

C++中,const与&修饰函数形参的可能情况有四种;C语言中,情况只有1)和3)两种。string str这是最普通的传值调用,首先对原str进行一次拷贝,会调用拷贝构造函数。str可以被修改,但修改的只是复制的值,而不会影响到本身的str。string &str这是引用,传递过来的就是str本身,在函数里修改str的话都会修改str本身,但不会调用拷贝构造函数。const string str传值调用,str是复制的值且不能被修改,但会调用拷贝构造函数。co

2021-07-29 13:42:15 1366 1

原创 BASLER Pylon 抓取策略

One by One Grab Strategy 逐个抓取策略当使用 one by one 抓取模式时,图像按其获取顺序处理。相机抓取引擎实例将空缓存队列中的缓存取消,并将空缓存排入低级别API流抓取器(1)。相机设备被触发(2)。相机设备获取图像,图像被传输到计算机,然后抓取到一个空的缓存中。相机抓取引擎实例线程被通知一个被填充缓存可用。此填充缓存被抓取引擎线程(3)接收,并将其放入到输出队列。在RetrieveResult () 方法中等待的应用程序线程被通知到,它停止等待抓取结果并接收填充

2021-05-13 09:55:09 764

转载 如何用sql语句复制一张表

如何用sql语句复制一张表1、复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。2、只复制表结构到新表CREATE TABLE 新表 SELECT * FROM 旧表 WHERE

2021-04-06 17:34:38 18844

原创 day1

1.int被设置为对目标 计算机而言最为“自然”的长度。自然长度(natural size)指的是计算机处理 起来效率最高的长度。

2021-03-20 11:21:24 134

原创 mfc中CreateThread(),

创建线程CreateThread线程创建函数CreateThread修改说明:CreateThread()l来创建线程其实是一种不太好的方法,在实际使用中尽量使用_beginthreade()来创建线程,因为更加的安全函数的原型:HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _

2021-02-26 08:34:16 2271

原创 c++命名规则

变量命名规则是为了增强代码的可读性和容易维护性。以下为C++必须遵守的变量命名规则:变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。第一个字母必须是字母或者下划线开头。不能使用C++关键字来命名变量,以免冲突。变量名区分大小写。变量命名规则:一.用最短字符表示最准确的意义。二.使用变量前缀。1.整型前缀  int nId;          //int前缀:n  short sId;        //short前缀:s  unsigned int

2021-01-26 15:16:33 2066

原创 qt使用ODBC连接mysql

1.实例代码int main(int argc, char *argv[]){ QApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setHostName("127.0.0.1"); db.setPort(3306); db.setDatabaseName("mytest"); db.setUserName("root"); db.

2021-01-23 11:07:34 1042

转载 手眼标定_全面细致的推导过程

相机的装载位置不在手上(eye-to-hand)相机固定在一个地方,机械手的运动不会带着相机一起移动。在手上(eye-in-hand)相机安装在机械手上,随着机械手一起移动。较为常用。这个实际上和eye-to-hand类似。可以快速有效地标定被测物体的坐标。这种情况的标定过程实际上和相机和机械手分离的标定方法是一样的,因为相机拍照时,机械手会运动到相机标定的时候的位置,然后相机拍照,得到目标的坐标,再控制机械手,所以简单的相机固定在末端的手眼系统很多都是采用这种方法,标定的过程和手眼分离系统的标

2021-01-20 09:47:49 1889

原创 膨胀与腐蚀的原理

**腐蚀的原理:**二值图像前景物体为1,背景为0.假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值。由于二值图像最小值就是0,所以就是用0替换,即变成了黑色背景。从而也可以看出,如果当前结构元素覆盖下,全部都是背景,那么就不会对原图做出改动,因为都是0.如果全部都是前景像素,也不会对原图做出改动,因为都是1.只有

2020-12-16 09:54:21 3556 1

转载 C++公有继承,保护继承,私有继承的区别

**1.公有继承–public**公有继承时,对基类的公有成员和保护成员的访问属性不变,派生类的新增成员可以访问基类的公有成员和保护成员,但是访问不了基类的私有成员。派生类的对象只能访问派生类的公有成员(包括继承的公有成员),访问不了保护成员和私有成员。#include <iostream>using namespace std;class Base {public: Base(int nId) {mId = nId;} int GetId()

2020-12-01 12:34:00 355

原创 c++中的转换函数

在C++中 当类的构造函数参数只有一个内置类型的形参或除了第一个形参外其他的参数都有默认值时,允许把这种内置类型赋值给类对象,这是一种隐试类型转换。那么既然存在由内置类型到类对象的类型转换,C++同样也提供由类对象到内置类型转换的方法------转换函数转换函数是用户自定义的强制类型转换,可以像使用强制类型转换一样的使用它们。它的形式如下: operator typename();需注意以下几点:1 转换函数必须是类方法2 没有返回值3 没有参数原因在于它是一种强制类型转换,所以不需要返回

2020-11-30 13:18:42 244

原创 c++中深拷贝与浅拷贝的区别

浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。...

2020-11-30 12:59:53 1306

转载 C++ 构造函数、析构函数、拷贝构造、赋值运算符

先建立一个测试类(包含.h和.cpp)//~ Person.h#ifndef PERSON_H_#define PERSON_H_#include <iostream>class Person {private: static int counter;public: Person() { counter++; std::cout << "构造函数" << std::endl; st

2020-11-30 11:08:08 141

转载 在C++中使用CognexVisionpro (修订2.0)

由于visionpro在7.2以及后续的版本中全面支持.net架构,不在发布COM组件。所以不能在VC++中直接使用visionpro. 但是可以利用interop 将.net 的程序封装为要吧在VC++中调用的COM组件。使用方法如下: VB.net中建一个工程InteropUserControl添加reference代码中加入 improts …加入函数 例如 public OpenImage()界面中加入显示内容。以上内容与VB.net编程一致。在此不再详述。 编译

2020-11-27 08:18:56 1791

原创 c++的运算符重载

C++ 中的运算符重载您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。Box operator+(const Box&);声明加法运算符用于把两个 Box 对象相加,返回最终的 Box 对象。大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数。如果我们定义上面的函数为类的非成员函数,

2020-11-26 09:55:57 182

原创 c++ stl栈stack的成员函数介绍(empty pop push size top 函数含义)

操作 比较和分配堆栈empty() 堆栈为空则返回真pop() 移除栈顶元素push() 在栈顶增加元素size() 返回栈中元素数目top() 返回栈顶元素

2020-11-25 16:37:44 1362

转载 函数后面加一个const关键字的作用

非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);唯一的例外是对于mutable修饰的成员。加了const的成员函数可以被非const对象和const对象调用,但不加const的成员函数只能被非const对象调用。class A { private: int m_a; public: A

2020-11-25 14:40:44 5587

原创 常见的数据类型所占的存储空间大小

首先,计算机单位是比特Bit(b),字节Byte(B),千字节Kilobytes(KB),兆字节Megabytes(MB),吉字节Gigabyte(GB)太字节terabyte(TB)1 bit = 1个2进制数;(比特)1byte = 8个2进制数;(字节)**16位编译器**char :1个字节char*(即指针变量): 2个字节short int : 2个字节int: 2个字节unsigned int : 2个字节float: 4个字节double: 8个字

2020-11-20 16:23:11 5610

转载 qt快捷键

2020-10-21 08:53:51 92

原创 public protected private

public修饰的变量和函数可以在类的内部和外部都可以访问protected修饰的变量和函数只可以在类的内部访问,如果该类派生出子类,那么在子类中该变量和函数也可以使用private修饰的变量和函数只可以在类的内部访问,在其派生的子类中不能访问。...

2020-10-20 15:01:58 323

原创 在c++中的头文件定义的不同的变量类型的作用域

根据头文件中变量的定义形式,作用范围有所不同,有如下几种情况:1在头文件中定义静态变量,如static TYPE var = init_value;其中dao= init_value部分可以省略。等效于在每个引用该头文件的源文件中,定义一个变量名为var, 类型为TYPE的静态全局变量。每个文件中的var变量均归属于本源文件,各文件中的互不相同。作用域为引用头文件的源文件范围内。2在头文件中定义变量,但是不带初始化值。TYPE var;这种情况下,相当于定义了一个全局变量var, 同时在

2020-10-20 14:49:15 919

原创 与表格关联的模型QSqlTableModel

4.2 与表格关联的模型如果要编辑数据库中的数据,城使用QSqlTableModel类。 QSqlTableModel类的继承层次如下:QObject - QAbstractltemModel - QAbstractTableModel - QSqlQueryModel - QSqlTableModelQSqlTableModel类的构造函数为:QSqlTableModel([QObject parent = Q_NULLPTR][, QSqlDatabase db = QSqlDatabase()

2020-10-14 16:03:27 687

ABB_pc_sdk帮助文档中文版.7z

ABB_pc_sdk帮助文档中文版

2021-07-02

Switch_type_program.zip

c#与ABB机械手通讯,本程序是基于RobotWare6.03做的通讯,如果需要高版本,下载对应的dll文件引用就好,新老版本库函数应该是一样的。本程序实现了对robot中一个num变量的读写,程序中有注释,并监控这个变量的改变,这个变量的改变会触发值改变事件。

2020-04-24

空空如也

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

TA关注的人

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