- 博客(47)
- 收藏
- 关注
原创 libtorch之tensor的使用
它将b的第3个围堵作为c的第一个维度,b的第二个维度作为c的第二个维度,b的第一个维度作为C的第三个维度,所以c的维度是5x5x3。这里需要申明的一点,这里只是数据维度的调整,并没有调整数据存储空间,tensor数据的存储是线性存储的。通过下标的访问,返回的是一个tensor对象,即使是最后一维元素也是,无法得到像float,int这样的数据类型,需要使用的tensor的item函数获取。tensor的拼接有两种基本形式的拼接,一种是stack式的扩展维度,另一种是cat形式的在某个维度上的连接。
2023-09-26 09:28:47
580
原创 通用插件框架体系-媒介系统
在实际的项目中,很多场景需要我们在不知道对象具体类型的情况下构建拷贝对象、复制数据、归档数据等。如在一个基础类库中管理了诸多的派生类,这些类是以基类类型指针或无类型指针管理的。另一种典型的场景是基础类库中要跨线程复制和拷贝数据时。这些场景有一个典型的特点是基础类库不知道派生对象的具体类型。媒介系统就是要建立一套机制,在这种场景下构建对象和归档对象。这一种需求类似于c++的运行时类型鉴定(RTTI),但又超越了运行时类型鉴定提供的能力。
2022-12-19 07:23:01
345
原创 通用插件框架体系-日志系统
日志,作为一个基功能有着广泛的应用,本文介绍了一种日志系统的实现,同时支持windows和linux两种平台。首先实现了一个基本的类CTrack,再以这个类为基础提供了一个对外的接口Track,之后再定义了各种宏,方便模块的使用。
2022-12-17 09:23:07
568
1
原创 halcon一维测量
halcon的一维测量核心步骤如下:1.通过一个矩形ROI创建测量对象,他的ROI是一个Rect2矩形,将在这个矩形phi方向上测量。2.调用单个尺寸测量或多个尺寸测量。3.关闭测量对象。代码如下:void TestProc1D(QWidget *w){ QSize size = w ->size();
2015-07-01 21:29:05
3429
原创 光学测量的精度
决定光学测量系统的精度,有哪些要素呢?首先我们看相机,相机的像素,诸如3876x2584这样的数据,更有直观放入表述叫100,500,800万像素。另一个是视场,视场诸如100cm X 80cm等,是拍摄对象真实的尺寸,这个视场的大小与镜头的放大、缩小倍数有关(更直接的说与焦距有关)。接下来我们看视觉分辨率,若100cm的距离成像到3876个像素上,那么在这个方向的分辨率就是100/3876
2015-07-01 21:07:58
4227
原创 halcon二维测量
halcon二维测量的基本步骤1.图片预处理,这里指的是图片的滤波等手段,使要测量的特征凸显化,有效去除噪点干扰等。2.阈值化,通过阈值化抽取出图像的特征,通常使用灰度阈值化,但halcon中没有特意的将图片转换成灰度图,而是直接调用阈值化处理函数。同时灰度直方图能帮助开发人员快速找到阈值范围。3.阈值化之后是求解图片的联通区域,一般阈值化之后存在很多连通区域,还要使用select_s
2015-06-29 21:43:09
7805
1
原创 PCM转WAV
//.H**********************************************************class QPcmToWav : public QObject{ Q_OBJECTpublic: QPcmToWav(QObject *parent = 0); void setFormat(const QAudioFormat
2015-03-07 11:10:38
566
原创 Qt动态重生类厂
class QConstructHelper{public: virtual void * create() = 0;};templatetypename T>class QMetaTypeConstructHelper : public QConstructHelper{public: QMetaTypeConstruct
2015-03-07 11:07:57
581
原创 树的非递归深度优先遍历
void GZLTBydDataExt::readFromXml(QDomElement & secondElem){ //QDomElement elem = secondElem.firstChildElement(); //while(!elem.isNull()) //{ // this->readMathData(elem);
2015-01-26 20:46:22
962
原创 c++中带空格路劲的处理
处理的原则是使用一个双引号将这个路劲包含,但c++中双引号是一个关键字符,所以必须使用转义字符完成这一功能。见代码:QString str;if(data.opt.contains(" ")){ str = QString("\"%1\"").arg(data.opt);}else{ str = data.opt;}Q
2014-12-04 21:06:45
1897
转载 字符串相似度
这个算法来源于网上,但忘记了出处,对其使使用了isSame封装,然后用在了自己的网页数据抓取代码中。//求解两个字符串的相似度int calculateStringDistance(const string &strA, const string &strB){ int lenA = (int)strA.length()+1; int lenB = (
2014-12-04 20:59:51
593
原创 mfcc
在研究MFCC算法时,从网上下了一份代码,经过小改编译通过了,可程序一跑就蹦,费了好几天的功夫也没找到问题的原因。化了一个月的时间边看资料,边整理代码,参照原有代码自己实现了一份。目前代码调通了,还没有能力验证结果的正确性。 这里使用的FFT算法是从网上下载的。稍后也将其附上。欢迎有MFCC经验的朋友帮忙指正其中存在的问题。 #ifndef MFCC_
2014-12-04 20:47:26
1025
原创 定时关闭消息对话框
class QTimeDialog : public QDialog{public: QTimeDialog (const QString & str,QWidget *parent = NULL); ~QTimeDialog (); static void show(const QString & msg, QWidget *parent = NULL)
2014-12-04 20:34:05
486
原创 c++数值处理
1.浮点数的比较2.防止被除数为0情况1.浮点数的比较不可以直接比较,需要给定一个差值判断两个浮点数相减的结果是大于还是小于这个差值 bool operator>(double d1,double d2) { double diff = 0.00000001; if(d1 - d2 > diff)return true;
2014-12-04 20:29:24
717
原创 Qt文件日志
#include class CFileMessageHandler{public: CFileMessageHandler(); ~CFileMessageHandler();protected: static void myMessageOutput(QtMsgType type, const QMessageLog
2014-12-04 20:22:24
789
原创 菜单式弹出窗体
弹出式窗体他的要求如下: 1.点击按钮弹出这个窗体在按钮旁边,并可编辑内容。 2.鼠标点击其他地方(非弹出窗体),这个窗体关闭注意:1.这里基类必须是QDialog. 2.创建他时必须指定parent. 3.这个窗体必须new出来。//头文件class GTZLSetWidget : public QDialog{
2014-12-04 20:17:07
613
原创 离散余弦变换DCT
离散余弦变换的函数如下:void DCT(double *data,int len,double * dct,int dctnum){ //double temp[100]; //memset(temp,0,100*sizeof(double)); //memcpy(temp,data,len*sizeof(double)); d
2014-11-02 16:28:49
795
原创 mel滤波器算法设计
什么是mel滤波器呢?mel滤波器是在mel频率上均匀分布的三角滤波器 mel频率与时域频率之间的关系是: me滤波器在mell频率上均匀分布,那么他的带宽是: 知道了中心平率,可以换算成时域频率: mel滤波器的传递函数如下: 实现代码如下:#ifndef MEL
2014-11-02 16:25:59
5915
原创 基于OPENCV 一维条码识别源码。
#include "stdafx.h"#include "opencv/cv.h"#include "opencv/highgui.h"#include "opencv/cxcore.h"#include "TestBarCode.h"#include #include "PointTrans.h"#include #include us
2014-09-30 07:48:39
8345
原创 两个在多线程环境下使用的小工具类
templateclass QThreadSelfQueue{public: QThreadSelfQueue(){} void push(T * p){ m_semaphore.release(); m_list.push_back(p); } T* pop(int timeout = -1)
2014-09-30 07:21:57
500
原创 敏捷开发—用户故事
1.1. 敏捷开发的目的质量风险前移适应需求变化及时总结、思考和促进团队成长。 2. User story和需求列表的不同需求栈通常如下:序号功能详细描述1功能1…………………………………………2功能2…………………………………
2014-08-14 20:08:00
1397
原创 高并发服务器设计总结2
高性能服务器设计总结(2) 服务器和客户的通讯,存在两种基本的情况,1. 客户到服务器。2. 服务器到客户。 基于消息的通讯系统,特别是在HTTP之上实现的诸如soap,xmlrpc,xmlpp等,这些都是短连接,易于构建从客户到服务器的通讯,但服务器要主动向客户发数据就没那么容易,原因是客户可能在子网或是子网的子网中。基于短连接的通讯也可变
2014-04-27 11:09:36
725
原创 回忆成都之行
迫于西安就业形势的压力和对成都的向往,4月17日简短的成都之行给我留下了不少值得思考的地方。1. 向往成都,到底向往什么?2. 现实与理想中的成都存在反差时,应如何面对?3. 做一件事情如何让理性的决策战胜感性的决策? 实话说,在我出行之时我还没有考虑清楚第一个问题和第二个问题,只是抱着一腔的热情和向往踏上了去往成都的路,头脑中呈现的成都和现
2014-04-27 11:00:53
1062
原创 高性能服务器设计总结(1)
高性能服务器设计在高性能服务器设计中首先应保持一下几个原则1. 对线程不是越多越好,原则上应和CPU核数相等,这是为什么呢?线程数超过了CPU核数,执行时的环境切换将耗去不少的CPU资源。2. 能不用锁最好,即是用,锁锁定的线程越少越好。推存仅在两个线程间使用锁,锁锁定的仅是数据,千万不要去锁定函数,锁定函数锁的作用域无法良好控制。锁锁定的粒度越小越好,
2014-04-07 08:19:54
722
原创 一次糟糕面试的思考
1. 沟通原则之一,在沟通过程中发现对方问的问题有问题时,应在融洽的气氛中当面指出,事后想找机会指出是无力的,并且可能没有这样的机会。但切记不要将这一切变成一场争论。 2. 沟通原则之二,当对方与你针锋相对时应怎么办呢?最明智的做法首先应指明这种状态,希望双方冷静下来之后寻求新的沟通方式。若这种方法无法凑效,应立即停止沟通。 3. 沟通
2014-03-31 12:55:06
712
原创 基于opencv的一维条码识别
一. 条码图像处理过程 图像的大致处理流程如下: 1.将彩色图转变成灰度图 2.对灰度图均衡化 3.将灰度图转换成二值图 4.对二值图进行腐蚀 5.识别边界检测轮廓 6.对每一个轮廓包围的区域进行特征识别,判断是否是条码区域。
2014-03-20 14:52:42
10165
原创 面对一个设计需求,是全新设计一个系统还是基于现有系统改造一个系统?
问题:面对一个设计需求,是全新设计一个系统还是基于现有系统改造一个系统?1.优先选择基于现有系统改造出一个系统,对现有系统的选择必须保证以下几个特点 a.类似系统。 b.成熟系统,并得到广泛认同和好评的系统。 c.已经大量应用的系统。 d.有广泛可扩展可利用的模块或资源的系统。 为什么要这样选择呢?优先需求只是一个大概,需求被提出以后如何变化和
2013-09-27 10:09:47
1084
原创 分页多表联查和效率问题
先看一个较常见的多表联查时的分页:SELECT TOP (30) T_EVENTS.EVENT_TIME,T_EVENTS.CATALOG_ID,T_USERS.USER_NAME,T_HOSTS.HOST_NAME,T_HOSTS.HOST_ADDRESS,EVENT_NAME,EVENT_CONTENTFROM T_CATALOGS,T_EVENTS,T_USERS,T_HOSTS
2013-07-31 10:34:01
1212
原创 SQL连接查询语句
1.left join left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL. 2.right join right join(右联接)
2013-06-28 16:03:29
494
原创 QXmlStreamReader能读取中文吗
QXmlStreamReader能读取中文吗? 答案是肯定的,但为什么有时会出错呢? 在XML文件的开头有一行 的鸟东西,这里的的encodeing就是解析XML时使用的编码方式,如果它设置的不正确将无法正常解析。在有中文的环境下要使用方式,还有诸如GB-2312也能行。 对于文件可以设置encodeing的值,对于从从网络上收到的xmlrpc报文,通常没有这类的东西,导致解析的
2013-06-22 10:31:10
1891
原创 思考QT的MV对开发简化
思考QT的MV对开发简化 人类软件开发的动向是什么呢?在这有两个值得关注的问题: 1.人类开发的软件一大部分是将人类从繁重和复杂中解脱出来,另一类是提高人类的生活体验和感受使生活变得更美好。 2.开发技术的变迁似乎与第一个吻合,为使开发人员从繁重中解脱,出现的各种开发语言、模块和各种开发库。 那么QT,在设计初期,是否要求开发人员解决复杂的逻辑和数据组织呢?
2013-06-22 10:28:28
1150
1
原创 再思MVC结构应用在桌面程序中的得失
在桌面应用程序开发中,面对于不同规模的程序,应用起同一种结构的MVC,显得的有些见酌。根据MVC的概念将程序分成3个部分,界面,业务,数据模型。程序实现的核心主要集中在业务和数据的组织上,那么更具不同部分的复杂度,将有不同的结构形式,是程序在开发的便利性、程序的扩展能力、生命周期上得到最优的提升。 1. 业务复杂程度对程序结构的影响: 所谓业务的复杂是指业务算法的复
2013-06-22 10:24:34
2219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人