自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于MFC的socket通讯——服务端与客户端编程

都说这个很简单,我真的是找了好久然后自己也写了好久的程序终于,把两个程序调通了,原理我就不介绍了,大家一搜全是的,在这里主要是为了给自己做个记录也为了让广大的同行们节约时间,不用自己再调代码。(1)首先,建立两个基于对话框的项目,分别命名为cFile,sFile,注意勾选Windows套接字选项:(2)服务端界面如下:插入一个Listbox Control,改ID为IDC_LIST1...

2020-01-08 16:41:37 2678 6

原创 使用MFC中的Picture Control控件实现指示灯

步骤:(1)将图片转换成ICO:http://www.bitbug.net/(2)建立一个基于对话框的MFC项目, 在资源视图导入两个图标,一个代表初始状态(修改ID为IDI_ICON_RED),一个代表工作状态(修改ID为IDI_ICON_GREEN)。(图标属性默认为IDI_ICON1、IDI_ICON2等,可自行修改)(3)在对话框中添加一个Picture Con...

2019-12-25 19:15:28 2678

原创 基于MATLAB的随机抽样一致性算法(RANSAC)

网上有许多关于随机抽样一致性算法的介绍,我理解的就是用这个算法可以在一堆离散数据中找到在一条直线上的数据,步骤如下:(1)新建一个ransac_demo.m的脚本,代码如下:function [bestParameter1,bestParameter2] = ransac_demo(data,num,iter,threshDist,inlierRatio) % data: a 2xn ...

2019-03-13 20:53:33 3319

原创 MATLAB 计算离散点间的夹角

最近的项目中想要在一组离散数组中找到在一条直线上的点,于是想到每三个点计算一下夹角,如果在一条直线上,那么夹角应该在180°左右。代码实现如下:%%数据x,y,z为存放用户数据的mx1的数组%% 每三个点求夹角for I=1:m-2a2 = (y(I)-y(I+1))*(y(I)-y(I+1))+(z(I)-z(I+1))*(z(I)-z(I+1));b2 = (y(I+2)-y...

2019-03-13 20:42:08 5485

原创 c++判断指定路径下的文本文档是否为空

最近项目中要用到这个功能,于是在按钮中添加了几句代码,这只是一部分,所以没写出函数名和返回值,实现功能即可:CString my_SaveFilePath;my_SaveFilePath = "E:\\Visual Studio 2013\\Projects\\test16\\test16\\8-1.txt";//在指定路径下新建文档,命名为“8-1”CDataExport::Expor...

2019-03-01 10:58:09 3110

原创 matlab 霍夫变换——检测圆弧

类似的代码网上一搜全都是,不少代码运行起来各种错误,真正正确的还是要靠自己慢慢尝试和修改。以下是本人亲测,绝对正确可行的代码。首先需要新建两个脚本,功能分别是图像的前期处理和检测圆弧,话不多说,代码实现如下:function [bw] = image_deal(bw) %UNTITLED2 Summary of this function goes here% Detailed...

2018-12-28 10:38:39 11465 21

原创 MATLAB struct结构体的应用

1. 使用直接引用方式定义结构与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:x.real = 0; % 创建字段名为real,并为该字段赋值为0x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0x =real: 0imag: 0然后可以将其动态扩充为数组:x(2).real...

2018-12-25 10:58:05 717

原创 MATLAB 霍夫变换 连接斜率相同的直线

       基于matlab的霍夫变换的应用,传统的霍夫变换可以检测图像中的直线,但是生活中一般都会出现遮挡物,导致一条直线发生中断,于是在传统霍夫变换的基础上做了修改,进而保证了检测直线的整体性。matlab 代码实现如下:% 入口图像为 BW,出口图像为f%optimize from main_optimize, merely select 2 lines, one has po...

2018-12-24 20:56:39 1274

原创 MATLAB 求取离散点的曲率最大值

x0 = linspace(0.1,2,100);%x0,y0验证函数离散点,可以非等间隔y0 = 1./x0;h1 = abs(diff(x0)) ;h = [h1 h1(end)];ht = h;yapp1 = gradient(y0)./ht; %matlab数值近似yapp2 = del2(y0)./ht; %matlab数值近似k2 = abs(yapp2)./(1+ya...

2018-12-20 16:58:18 6776 1

原创 PCL 常见错误的解决方法

 一:无法解析的外部命令 #define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) VTK_MODULE_INIT(vtkRenderingOpenGL);错误    1    error LNK2019: 无法解析的外部符号 "void __c...

2018-12-19 17:25:49 7591 4

转载 PCL 基于区域生长的分割算法

算法理论:区域生长分割算法广泛应用于图像分割中,二维图像常常采取区域生长分割算法实现图像分割,由于其分割的高效性,现已被应用于3D分割中,PCL中的类PCL :: RegionGrowing用来实现点云的区域生长分割区域生长分割是基于点云法线的分割算法,算法的主要思路如下:(1)根据点的曲率值对点云进行排序,曲率最小的点叫做初始种子点,区域生长算法从曲率最小的种子点开始生长,初始种子点所在...

2018-12-07 21:22:57 1892

原创 MFC 实现对话框之间的变量值的调用

最近做项目时,写了一个软件,里面有两个对话框,功能大概就是通过第一个对话框得到两个变量的值,然后用第二个对话框输出相应的数据。网上查到的方法基本都是通过设置全局变量来实现的,但是设置全局变量的方法有很多,众说纷纭,下面介绍一下本人亲测的方法,绝对正确而且简单易懂,话不多说,上图:第一个对话框名为:DlgModeless,第二个对话框名为:DlgModeless1。步骤一:以如下形式在DlgMo...

2018-12-07 21:21:41 1260

转载 VS2013与MATLAB2014a 混合编程:调用DLL

1. VC调用Matlab DLL的方式DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供各种应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享。Matlab也支持将m程序编译成dll,供其他语言(包括VC、VB、Fortran等)调用,下面先简单介绍下Matlab DLL的编译步骤:1.1  Matlab DLL制作(1)配置Matlab的编译器...

2018-12-06 19:52:51 679

转载 VS的Spin控件和edit控件

对于这类型的控件,我以为是一个整体,应该是edit的一种不同风格,今天找了半天也没发现有现成的这类型的控件。后来网上查找,发现这是edit和spin控件的组合形式。下面介绍一下具体的实现过程。在对话框项目中,随意绘制多个edit和spin控件。 第一步 就是要关联edit和spin。 关联的方式可以是代码实现(用到setbuddy函数)也可以是在控件的属性中设置。此处我们在属性设置...

2018-12-04 19:03:57 626

转载 VC++ 获取文件路径,已获取当前路径为基础

#include <iostream>#include <windows.h>#include <string>using namespace std;int main(){ char buf[1000]; int i=1000; GetCurrentDirectory(1000,buf); //得到当前工作路径 cout<<b...

2018-12-04 09:26:29 870

转载 MATLAB 直线提取和RANSAC分割

直线提取可以用来在已经存在的地图上构建地图。使用特征代替原始数据显得更加简洁,并且可以反映物理或抽象的对象,同时包含着丰富的信息量,还可以对特征的精度进行评估。分割:有多少条直线,哪些数据点属于哪些直线。直线提取:已知哪些点属于哪些直线,如何去估计曲线的参数。一.直线提取给定激光扫描仪的测量矢量,确定直线的参数。MATLAB源码如下:clc; clear;T=100;...

2018-11-30 10:30:32 3547

转载 PCL 基于RanSaC的点云分割方法

一.点云分割点云分割可谓点云处理的精髓,也是三维图像相对二维图像最大优势的体现。点云分割的目的提取点云中的不同物体,从而实现分而治之,突出重点,单独处理的目的。而在现实点云数据中,往往对场景中的物体有一定先验知识。比如:桌面墙面多半是大平面,桌上的罐子应该是圆柱体,长方体的盒子可能是牛奶盒......对于复杂场景中的物体,其几何外形可以归结于简单的几何形状。这为分割带来了巨大的便利,因为简单几...

2018-11-29 20:49:44 3267 4

原创 PCL 从深度图像中提取NARF特征

一.关键点的概念 NARF(法线对齐径向特征)关键点是为了从深度图像中识别物体而提出的,关键点探测的重要一步是减少特征提取时的搜索空间,把重点放在重要的结构上,对NARF关键点提取过程有以下要求:①提取的过程必须考虑边缘以及物体表面变化信息在内;②关键点的位置必须稳定的可以被重复探测,即使换了不同的视角;③关键点所在的位置必须有稳定的支持区域,可以计算描述子和进行唯一的估计法向量。为了满足上述...

2018-11-28 20:16:16 821

原创 PCL 从深度图像中提取边界

一.图像边界 深度图像边界:计从前景跨越到背景的位置定义为边界。具体有:------ 物体边界:这是物体的最外层和阴影边界的可见点集------ 阴影边界:毗邻与遮挡的背景上的点集------ Veil点集:在被遮挡物边界和阴影边界之间的内插点,它们是有激光雷达获取的3D距离数据中的典型数据类型这三类数据及深度图像的边界如图: 二.代码实现 #include <io...

2018-11-28 19:57:15 3553 7

原创 PCL 从点云数据创建深度图像(二)

一,点云与深度图像的区别 1.深度图像也叫距离影像,是指将从图像采集器到场景中各点的距离(深度)值作为像素值的图像获取方法有:激光雷达深度成像法,计算机立体视觉成像,坐标测量机法,莫尔条纹法,结构光法。2.点云:当一束激光照射到物体表面时,所反射的激光会携带方位,距离等信息。若将激光束按照某种轨迹进行扫描,便会边扫描边记录到反射的激光点信息,由于扫描极为精细,则能够得到大量的激光点,因而就可形...

2018-11-28 16:14:05 1291 2

原创 PCL 从点云创建深度图像(一)

这是点云库学习教程书中的代码,运行的时候窗口只出现一下就结束了,不知道是什么问题,希望有大神帮忙解答以下,完整代码如下。#include <pcl/range_image/range_image.h>int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ> pointCloud; // ...

2018-11-21 09:46:53 966 2

原创 PCL 点云数据实现旋转、平移

 这里主要介绍点云的平移与旋转,话不多说,代码如下:该代码可实现点云绕z轴旋转90°,绕x轴平移2.5,如果显示无法打开PDB文件,请翻到结尾查看我的解决方法。#include <iostream> #include <pcl/io/pcd_io.h>#include <pcl/io/ply_io.h>#include <pcl/point_...

2018-11-21 09:44:25 15619 3

原创 PCL ICP点云配准

 随着计算机辅助设计技术的发展,通过实物模型产生数字模型的逆向工程技术由于它的独特魅力获得了越来越广泛的应用,与此同时,硬件设备的日趋完善也为数字模型操作了足够的技术支持。在逆向工程、计算机视觉、文物数字化等领域中,由于点云的不完整、旋转错位、平移错位等,使得要得到完整点云就需要对局部点去进行配准。为了得到被测物体的完整数据模型,需要确定一个合适的坐标变换,将从各个视角得到的点集合并到一个统一的坐...

2018-11-19 17:33:07 842 1

原创 PCL 使用滤波器移除离群点,并用PCL Viewer显示出来

使用StatisticalOutlierRemoval滤波器移除离群点: 知识:激光扫描通常会产生密度不均匀的点云数据集。另外,测量中的误差会产生稀疏的离群点,使效果更糟。估计局部点云特征(例如采样点处法向量或曲率变化率)的运算很复杂,这会导致错误的数值,反过来有可能导致点云的配准等后期至失败。以下方法可以解决其中部分问题:对每个点的邻域进行一个统计分析,并修剪掉那些不符合一定标准的点。我们的...

2018-11-19 16:11:11 1300

原创 PCL 滤波模块相关概念及算法介绍

1.PCL中点云滤波方案 PCL中总结了几种需要进行点云滤波处理的情况,这几种情况分别如下:(1)点云数据密度不规则需要平滑。(2)因为遮挡等问题造成离群点需要去除。(3)大量数据需要进行下采样(Downsample)。(4)噪声数据需要去除。对应的方法如下:(1)按具体给定的规则限制过滤去除点。(2)通过常用滤波算法修改点的部分属性。(3)对数据进行下采样。...

2018-11-16 11:17:56 3725

原创 PCL 点云数据读取并显示

在上一篇文章中我们已经将txt转化成pcd格式了,现在想查看生成的pcd文件是否确实是txt中的数据 ,参考一下代码:#include <iostream> //标准输入输出流#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件#include <pcl/point_types.h> //PCL对各种格式的点...

2018-11-15 16:50:24 3638 1

原创 PCL txt数据转换成pcd格式

最近做项目,关于三维数据的去噪,拼接,边界提取什么的都是选用的matlab,算法很多种,虽然基本能达到效果,但是最近才发现PCL这个C++的库也可以完美的实现这些功能,于是转向开始研究PCL,激光扫描仪的数据保存的格式只有 txt 或者csv,要使用PCL,需要将数据格式改为pcd,代码如下:#include<iostream>#include<fstream>#...

2018-11-15 16:44:38 1449 4

原创 非常详细的VS2013与PCL1.8.0配置方法

一.安装PCLPCL1.8.0的下载地址: http://pan.baidu.com/s/1c1sqoQO安装前先确认VS2013的版本,32位还是64位,PCL的版本应与VS的版本保持一致,查看版本的方法:打开vs后,打开任务管理器:下载相应版本的PCL之后,解压直接安装,一直下一步就好了我这里修改了一下安装路径: 安装途中会弹出安装openni的框,我们将OpenN...

2018-11-14 17:36:14 1879 2

转载 点云pcd文件与txt转化

 PCD->txtvoid BaseMeasure::pcd2txt(pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud, char *filename){ FILE* wc = fopen(filename, "w"); int sizepcd = cloud->points.size(); for (int i...

2018-11-14 09:44:22 1514

原创 RobotStudio 示教器编程:MoveC指令

点击菜单-程序编辑器-例行程序-新建例行程序-修改名称-确定:开始编程,摇动操作杆使机器人走到起点,然后插入MoveL,修改速度和转弯半径,也可以修改点位名称:然后再摇动操作杆,走到圆弧中间点,插入MoveC,该指令会将当前点直接赋值给circle20和circle30,此时我们只需要修改circle30的数据,将操作杆摇到终点修改位置即可: 最后调试-PP移至例行程序,然...

2018-11-12 18:42:55 14364

原创 RobotStudio 示教器编程:MoveL指令

首先,导入工具,若工具不是系统模型库中的,需要设定工具TCP的位置,设定TCP的方法自行百度: 导入焊枪后,选择:基本-控制器同步——同步到RAPID,将焊枪的数据导入到控制器中:同步后的焊枪数据保存在非系统模块,需要做一个调整:菜单-程序数据-tooldata-tWeldGun-编辑-更改声明-模块-user 设置完成后,点击:程序编辑器-任务与程序-新建程序...

2018-11-12 15:26:19 16937

原创 RobotStudio 机器人的直线运动控制

打开示教器:示教器调到手动模式,按下Enable使能开关,使机器人上电:选择菜单中的手动操纵,将动作模式改为线性,坐标系改为基坐标:即可实现用摇杆控制机器人在基坐标下做直线运动。...

2018-11-12 10:12:54 5786

原创 RobotStudio 创建第一个工作站

直接上图: 笔记:ctrl+shift+左键:旋转视角 

2018-11-12 09:14:33 2176

转载 matlab 拟合圆并求圆心

仅以此文章做笔记:clc clear all I=imread('a003.bmp'); [m,n,p]=size(I); I=im2bw(I); se=strel('square',3); Ia=imerode(I,se); Iout=I-Ia; figure(1); imshow(Iout); Iout1=Iout; N=1; for i=1:m     for...

2018-11-02 15:01:49 14382 7

原创 设置matlab作图数据的个数

有时候用matlab作图时,数据点太多,可以用下面的函数对maker进行设置,这种方法最简单,对数据进行抽样,但是会造成数据的丢失,所以当数据变化缓慢时尚可用,若相邻数据点的值变化较大,则可能导致部分特征失真:function nummarkers(h,hnum) % NUMMARKERS takes a vector of line handles in h % and reduce...

2018-11-01 10:34:09 2973

原创 matlab Douglas-Peucker 道格拉斯-普克算法

 c道格拉斯-普克算法 [1]  (Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法、迭代适应点算法、分裂与合并算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定。算法的基本思路是:对每一条曲线的首末点虚连一条直线,求所有点与直线的距离,并找出最大距离值dmax ,用dmax与限差D相...

2018-10-30 20:36:37 4570

转载 空间点绕轴旋转公式&程序(C++)

右手系关于这个概念,搞3D的人应该都懂,而像我这样做图像处理的可能就对这个知道的比较少了。右手系这个概念其实很简单,看图就懂了。在坐标系中,右手摆成下图的样子,当拇指指向X轴食指指向Y轴时,中指指向了Z轴,满足这个条件的坐标系就是右手系。本文所有概念都在右手系下进行讨论。右手系 旋转90°到底是怎么转当我要让一个点,绕Y轴转动了90°,并且用程序计算出了旋转结果,为了验证这...

2018-10-30 10:17:41 14182 2

原创 VS2013 从txt文件中读取三维的数组

从MATLAB中保存的二维数组839*3的数据到txt文件中,格式化保存方式如下:matlab代码:Pp2=[x;y;z]';fid = fopen('a.txt','wt');[m,n]=size(Pp2);for i=1:1:m for j=1:1:n if j==n fprintf(fid,'%g\n',Pp2(i,j)); ...

2018-10-23 16:21:11 1431

原创 VS 不存在从 "CString" 到 "char *" 的适当转换函数

出现不存在从CString到const char*的转换,可以将项目属性的字符集设置从"使用Unicode字符集“转换为”使用多字字符集“,点击”项目“----"属性"----"配置属性"----”常规“----”字符集“...

2018-10-23 14:55:07 4732 3

转载 matlab如何将矩阵数据转换成txt文件保存

具体的命令是:用save *.txt -ascii xx为变量*.txt为文件名,该文件存储于当前工作目录下,再打开就可以 打开后,数据有可能是以指数形式保存的.看下面这个例子:a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];save afile.txt -ascii aa...

2018-10-22 10:28:05 6846 1

空空如也

空空如也

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

TA关注的人

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