小知识点
从刻意到习惯
这个作者很懒,什么都没留下…
展开
-
自动获取指定路径文件夹,删除文件夹及子文件
1.思路读取指定路径文件夹,获取文件个数、名字、大小等信息。核心函数:_findfirst、_findnext和_fineclosestruct _finddata_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; _fsize_t size; char name[260];};time_t:其实就是long_fsize_t:就是unsigned longa原创 2022-04-20 21:50:43 · 650 阅读 · 0 评论 -
c#委托、线程、定时器学习感悟
委托定义方式举例:public delegate void DogFunction(int a)该类型的委托针对返回值类型为void,参数类型为单个int的方法for exeample:void method(int a)形象解释下委托:可以看作是在窗口买票事件,委托相当于特定窗口,方法相当于特定人群,不同的人群需要在不同的窗口买票。一种类型对应一种类型,公共规则不能乱,委托与委托的对象也是如此。表现形式:` Example ex = new Example(); D原创 2021-05-08 15:08:48 · 693 阅读 · 0 评论 -
c#catch错误信息自定义显示
try{}catch{ string a = DateTime.Now.ToString();// 2008-9-4 20:02:10 //string b = DateTime.Now.ToLocalTime().ToString(); string g = string.Format("时间:{0}\r\n信息:{1}",a,ee.ToString()); listBox.Items.Add(g.To原创 2021-04-20 16:37:01 · 653 阅读 · 0 评论 -
TCP通讯MODBUS协议解析
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。TCP/IP层次模型共分为四层:应用层、传输层、网络层、数据链路层。...原创 2021-01-21 16:49:08 · 6733 阅读 · 0 评论 -
FILE写入数据到本地
新建一个文件: FILE *f = fopen(“a.txt”,“w+”);(1)fopen()函数介绍fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能: 为使用而打开一个流 把一个文件和此流相连接 给此流返回一个FILR指针参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下字符串 含义“r” 以只读方式打开文件“w” 以只写方式打开文件“a” 以追.原创 2020-12-29 13:42:50 · 1115 阅读 · 1 评论 -
halcon与opencv或者halcon配置修改包含目录、库目录继承值的问题
之前用vs2015配置过opencv的库,之后新建一个工程原有路径都在,再用halcon的时候opencv的路径就显得多余了,而且可能还会导致错误,我就碰到了配置halcon出错的坑,花了一个小时才解决,捂脸(表情),还好参透了其中奥妙哈啊哈哈哈,解决方法如下:在属性管理器中选择debug|win64或win32属性,打开找到属性文件,右键选择属性,在通用属性中,选择修改包含目录,库目录,选中后选择从父级或项目默认继承,这里要弄清楚,此处的这个不是打开编辑选项之后带勾选框的那个,是在下拉栏编辑选项下面那个原创 2020-12-15 09:38:17 · 354 阅读 · 0 评论 -
MODBUS协议简记
Modbus是OSI模型第七层上的应用层报文传输协议,只是表面的解释一下,总结一下,提醒自己别忘了原创 2020-11-06 16:44:41 · 181 阅读 · 0 评论 -
机器人抓取物体原理初步
比如说,你现在使用机器人,将A平台的一个物体,移动到B平台上去。那么机器人如何去确定A平台上面的物体的位置呢?那么一般会在A平台上面建立个基础坐标系XYZA,机器人有自己的一个坐标系XYZO,XYZA和XYZO的关系一般固定下来了,如果这个时候知道A平台上面物体在XYZA坐标系下的位置,就可以计算出其在XYZO坐标系位置了,这个时候机器人就知道抓取位置。在B平台上面,也是同样道理。其实就是坐标系之间的转换。...原创 2020-11-05 16:46:27 · 1729 阅读 · 0 评论 -
机器人工具坐标系标定原理
工具坐标系默认的工具坐标系是以法兰中心点为原点,XYZ方向固定的一个坐标系。其他任何安装在末端法兰上的工具,TCP点的位置相对于法兰中心点是固定的,以这个TCP为原点建立工具坐标系其实就可以看做相对于末端的平移和旋转。标定工业机器人使用过程中经常在机器人末端法兰面安装不同的工具来满足实际生产需求,为了准确控制工具运动的位置与姿态,需要对工具所在坐标系进行标定。对于工业机器人来说,基坐标B与 末端法兰面所在坐标系 T之间的关系在制作机器人的时候已经设定好,每次机械臂在运动时,每一个关节的旋转扭角在变化原创 2020-11-05 16:16:58 · 24130 阅读 · 3 评论 -
2020-10-28
像素坐标、图像坐标、相机坐标、世界坐标关系如下:https://blog.csdn.net/chentravelling/article/details/53558096相机标定的目的是获得相机的内外参数,通过内外参数可以实现像素坐标到世界坐标的转化...转载 2020-10-28 16:52:02 · 134 阅读 · 0 评论 -
UpdateData(TRUE)与UpdateData(FALSE)用法
在MFC显示窗口中遇到数值已经读了进来,但显示图像没有更新的情况,这就要说到UpdateData的用处UpdateData(TRUE)是将窗口中的信息数据更新到程序变量UpdateData(FALSE)是将程序中的更改在界面上更新显示。我遇到的就是程序设置完之后在界面上没有反应,在运行语句后加上UpdateData(FALSE),效果就有了...原创 2020-09-16 15:53:54 · 2489 阅读 · 0 评论 -
双目相机坐标系确定(死记)
沿相机镜头方向的为z,沿镜头方向向外的为x,根据右手定则,大拇指永远指向z方向,x方向也已知,y方向就确定了原创 2020-09-09 09:50:28 · 1700 阅读 · 2 评论 -
MFC定时器使用,MFC学习第五课部分内容
1.在需要定时器的地方加上settimer(1,100,NULL);1为标志符号,100是间隔100毫秒,回调函数设置为NULL2.添加消息响应WM-TIMER,在里面可以添加判断语句,通过标志符号进行判断,这样定时器就可以使用了内容为理论学习,后续用到继续添加相关内容...原创 2020-09-07 20:07:31 · 120 阅读 · 0 评论 -
成员变量调用类中函数的方法,static的作用
成员变量调用类中函数的方法,static的作用1.`class point{public:void output(){}static void init(){}`}main(){CPoint pt;pt.output;pt.init;}2.main(){point::init()point::output}1 中定义了类的对象,开辟了空间,可以调用类内函数2.中output()会出错,是因为它没有开辟内存空间,没有实体那为什么加了static就可以了,stat原创 2020-08-28 08:36:29 · 366 阅读 · 1 评论 -
新建的类里面onintdialog()初始化如何创建
新建的类里面onintdialog()初始化如何创建简单一步搞定:类视图 —> 右键对话框类 —> 属性—>重写---->添加 OnInitDialog添加完成后一些代码的初始化可以在里面完成,如初始化窗口原创 2020-08-27 21:30:59 · 201 阅读 · 0 评论 -
vs2012转到vs2010时程序报错error RC1015
今天在将vs2012编写的程序转到vs2010时程序报错,error RC1015: cannot open include file ‘afxres.h’,查了一下,其实很简单,只需在属性里设置平台工具集为v100即可解决。低版本在升高版本时只需更新即可,高版本转低版本需注意工具集的问题...原创 2020-08-27 21:18:30 · 285 阅读 · 0 评论 -
相对路径的写法
相对路径的写法使用相对路径有它的好处,在编写程序读取图像或者是配置环境的时候,使用绝对路径在自己电脑上可以运行工程,但拷贝到别的地方程序跑不起来了,使用相对路径就避免了这个问题。…/ 上一级目录./ 当前目录/ 根目录举个例子:D:\VS_program\MFCApplication4这是程序的所在,图片在他的上一级名叫img_01,则读取图片路径可表示为:“…/img_01”...原创 2020-08-26 20:51:05 · 2466 阅读 · 0 评论 -
CString与int、double 、char*、HTuple转换
转载:https://blog.51cto.com/green906/2070580我用到的是与HTuple的类型转化,所以本次就先记录一下这个转化关系 HTuple hv_lujing;CString m_Path;CStringA StrTemp(m_Path); hv_lujing = (LPSTR) StrTemp.GetBuffer();...转载 2019-08-18 08:20:56 · 4343 阅读 · 0 评论 -
HTuple与vc之间的数据类型转换
HTuple→VC 数据类型转换HTuple hTuple = 1234;int i = hTuple[0].I(); // i=1234long l = [0].L(); // l=1234long lNumber = hTuple.Num(); // lNumber=1,数据个数double d = hTuple[0].D(); // d=1234.0000如果hTuple里面放的...转载 2019-07-28 21:41:11 · 2931 阅读 · 1 评论 -
error C2653: “***”不是类或命名空间名称
出现该问题主要是mfc自定义的类时忘记#include “stdafx.h”,或者#include "stdafx.h"没有放在实现代码的第一行导致。转载 2019-06-03 19:37:46 · 3616 阅读 · 0 评论 -
RGB颜色对照表
非常全的颜色参数对照:http://tool.oschina.net/commons?type=3转载 2019-06-02 08:44:12 · 678 阅读 · 0 评论 -
vector的用法简介
vector是一个十分有用的容器,vector pta可以储存点坐标。pta.push_back(pt);push_back在vector类中作用为在vector尾部加入一个数据,也就是将点pt放入pta这个容器中。下面看一段实例了解它的用法:float wo::ass(vector<Point2f> pta,Point pt1,Point pt2){ Point p1 =...原创 2018-12-24 16:17:15 · 355 阅读 · 0 评论 -
imread读取图片的方式
Mat image_source = imread(“D:\program\xie.png”)直接放入图片的绝对路径只需要把图像文件放在工程文件夹下和.cpp文件放在一起就行了,读取的时候就可以直接用名字读取,如imread(“miao.jpg”);src = imread( argv[1], 1 );方法是:工程——属性——配置属性——调试——命令行参数,然后设置就行了。argv[1...原创 2018-12-19 21:31:30 · 29095 阅读 · 0 评论 -
putText函数的用法
格式如下:void cv::putText(cv::Mat& img, // 待绘制的图像const string& text, // 待绘制的文字cv::Point origin, // 文本框的左下角int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)double fontScale, // 尺寸因子,值越大文字越大cv::S...原创 2018-12-19 21:10:35 · 7093 阅读 · 0 评论 -
Qlabel设置字体颜色、大小以及中文显示方法
//设置字号 QFont ft; ft.setPointSize(20); ui.label5->setFont(ft); //设置颜色 QPalette pa; pa.setColor(QPalette::WindowText,Qt::red); ui.labe...转载 2019-02-27 18:49:14 · 9057 阅读 · 0 评论 -
Qlabel显示多行数字
ui.label4->setText(QString::number(dis4)+"\n"+QString::number(dis3)+"\n"+QString::number(dis3)+"\n"+QString::number(dis1));原创 2019-02-27 18:54:02 · 5540 阅读 · 0 评论 -
Qlabel输出图像
QImage gray = Mat2QImage(img);//显示模板图 QPixmap imge = QPixmap::fromImage(gray); QPixmap ima = imge.scaled(ui.label1->width(),ui.label1->height(),Qt::KeepAspectRatio); ui.label1->setPixm...原创 2019-02-27 19:05:30 · 588 阅读 · 0 评论 -
qt中string转化成Qstring类型,Qstring转化为int方法
int s1 = atoi(qstr1.toStdString().c_str());QString qstr1 = QString::fromStdString(voc[0]);原创 2019-02-27 19:16:21 · 6780 阅读 · 0 评论 -
创建一个与原图尺寸大小一样的图片
在解决问题时,有时需要创建一个和原图尺寸一样的图片,在新的图片上进行一系列变换,下面列出几个可以实现此功能的方法:1.Mat image = imread("D:\\program\\51.png",0);//读入模板图Mat dstImg(image.size(), CV_8UC3, Scalar::all(0));//纯黑图像 src = imread( argv[1], 1 ...原创 2019-02-24 10:35:13 · 3287 阅读 · 0 评论 -
遍历图片像素的三种方法
void colorReduce(Mat& inputImage, Mat& outputImage, int div){ outputImage = inputImage.clone(); int rows = outputImage.rows; int cols = outputImage.cols*outputImage.channels(); for (int i...原创 2019-03-30 15:06:55 · 2272 阅读 · 0 评论 -
计算程序运行时间
//【3】记录起始时间 double time0 = static_cast<double>(getTickCount()); //【5】计算运行时间并输出 time0 = ((double)getTickCount() - time0) / getTickFrequency(); cout << "\t此方法运行时间为: " << time0 <...原创 2019-03-31 09:22:32 · 576 阅读 · 0 评论 -
引用&的解释
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名...原创 2019-04-05 10:09:44 · 400 阅读 · 0 评论 -
指针的学习详解
https://www.cnblogs.com/yaoyudadudu/p/9171240.html转载 2019-04-05 11:41:32 · 103 阅读 · 0 评论 -
c++结构体的使用
1.结构是一种比数组更灵活的数据格式,因为同一个结构可以存储多种类型的数据,结构是用户定义的类型,结构声明定义了这种类型的数据属性,定义类型后便可以创建变量。如:struct famous{ char name[20]; float volume; double price; }struct是关键字表明这是一个结构体, famous是结构体的名称,这是一个新类型,...原创 2019-04-02 21:42:36 · 222 阅读 · 0 评论 -
定义Mat类型显示未定义
mat未定义会有很多可能,如#include <opencv2\highgui\highgui.hpp> //opencv申明#include <opencv2\imgproc\imgproc.hpp>#include <opencv2/opencv.hpp>三个头文件没包含,或者是debug没配置或路径不对。这次我遇到不是以上两者,查找之后得出原...原创 2019-05-26 11:35:14 · 7829 阅读 · 1 评论 -
C1075 左侧的 大括号“{” 与文件结尾不匹配
转载: https://blog.csdn.net/u013776188/article/details/79579251VS中出现这个问题很奇怪,不存在大括号不匹配的情况,编译出现这个错误时,可以看到在控制台同时输出这样一句提示“请转unicode编码…”有的时候在别的地方复制代码到另一个程序里时会出现这种错误所以我给出的解决方法是:将代码复制到txt,将txt保存为unicode编码,在...转载 2019-05-26 11:38:35 · 1568 阅读 · 0 评论 -
saturate_cast防止数据溢出
大致的原理应该如if(data<0) data=0; elseif(data>255) data=255;用法: dst.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[0]) + beta);...原创 2019-05-29 16:01:55 · 165 阅读 · 0 评论 -
用迭代器删减容器中的元素
vector<vector<Point>>::const_iterator itc= contours.begin(); int cmin = 50; while (itc!=contours.end()) { if (itc->size() < cmin) itc= contours.erase(itc); else ++...原创 2019-05-29 16:37:38 · 285 阅读 · 0 评论 -
vec4f的用法
对于二维直线而言类型为cv::Vec4f,对于三维直线类型则是cv::Vec6f,输出参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点(即通常所说的点斜式直线)。Vec4f line_para; Point point0;point0.x = line_para[2];//2、3代表点point0.y = line_para[3]; double k = line_par...原创 2019-01-02 11:29:31 · 9272 阅读 · 0 评论