C/C++
sac761
项目合作请加QQ489662100
展开
-
C语言编程笔记
1,构造函数初始化列表:CmCurveEx::CmCurveEx(const Mat& srcImg1f, float maxOrntDif): m_maxAngDif(maxOrntDif), m_img1f(srcImg1f){ CV_Assert(srcImg1f.type() == CV_32FC1); m_h = m_img1f.rows; m_w = m_img1f.col原创 2016-07-23 11:57:38 · 1942 阅读 · 1 评论 -
【自我修养】理解回调函数
回调函数就是被调用者回头调用的函数,它是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,此时就可以称它为回调函数。回调函数的使用示例如下:typedef void(*FunPtr)(void)//定义回调函数//回调函数,必须声明为staticstatic void callBackFun(void){......}//设置触发条件voi原创 2016-10-08 17:39:11 · 648 阅读 · 0 评论 -
无法打开包括文件的解决办法
出现这个错误只有2种可能,一是你的工程包含文件中没有这个头文件,这种错正常人不会犯,那第二种就是传说中的,“明明包含目录中添加了这个文件,就是一直提示无法打开它!哭晕在厕所!”其实这个错犯的,唉和第一种错一样蠢。如果你是这样include的:#include "gtk/gtk.h"而你的包含目录是这样的:D:\gtk\include\gtk-2.0\gtk不说了,自原创 2017-04-11 09:38:58 · 27881 阅读 · 9 评论 -
C/C++混编注意事项
VS可以支持C/CPP文件的同时存在,这自然是一种进步,不过也会引起许多麻烦。在CPP里面调用C的函数,有时候会提示符号未定义。原因是在CPP里面调用C的函数在CPP的include里的.h文件在编译的时候是按照C++的语法来编译。C++和C编译的时候改变了很多,比如C不支持bool变量,C++不支持给void函数返回值,C++中对内存泄漏也检测的更为严格,C++的类型要比原创 2017-05-18 09:49:03 · 875 阅读 · 0 评论 -
非局部均值滤波原理 Non-local means filter 【从入门到扫地出门】
一,NLM滤波原理简介图像中的像素点之间不是孤立存在的,某一点的像素与别处的像素点一定存在某种关联,可以概括为灰度相关性和几何结构相似性。这是均值滤波考虑的地方,但是我们还发现,相似像素并不局限于某个局部区域,如图像中的长边缘,结构纹理等,都是相似的。自然图像中含有丰富的重复冗余信息,所以可以采用能够描述图像结构特征的图像块在整个图像上寻求相似块。在文献[1]中,NLM有2种应用,一种比较原创 2017-08-01 16:47:47 · 37894 阅读 · 7 评论 -
Google C++ Style Guide
Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短时间内快速掌握规范的重点内容。不过规范毕竟是人定的,记得活学活用。看图前别忘了阅读下面三条重要建议:1 保持一致也非常重要,如果你在一个文件中新加的代码和原有代码风格相去甚远的话,这就破坏了文件本身的整体美观也影响阅读,所以要尽量避免。2 一些条目往往有例外,比如下面这些,转载 2017-07-24 18:01:23 · 720 阅读 · 0 评论 -
【快速浮点除法】用union实现快速除法
//浮点数乘以2,有0判断 //float== 1符号位+8阶码+23尾数__inline float xmul2f(float d) { union { float floatval; int intval; } uflint; uflint.floatval = d; if (uflint.intval & 0x7FFFFFFF) { // if f==0 do ...原创 2018-08-14 15:41:49 · 2125 阅读 · 1 评论 -
【作死】LINUX系统文件权限被搞坏了怎么办?
对整个linux系统进行了权限修改操作:sudo chmod -R 777 * 之后会怎样?你怎么这么会皮呢?系统当然被你搞残啦,很多系统文件都需要严格的读写权限限定,你这样一搞,很多程序和服务都启动不了了,比如sudo 等指令可能都用不了了,SSH和samba等软件服务都GG了。说多了都是泪,下面是我的自我救赎: 一,sudo等指令不能用参考https://www.simap...原创 2018-09-27 18:17:55 · 974 阅读 · 0 评论 -
grep使用笔记
[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。1,在文件夹下便利查找文件名为CMakeLists.txt,包含march字符串的所有文件:grep...原创 2018-10-08 17:38:10 · 316 阅读 · 0 评论 -
CMakeLists.txt编写笔记
一,手动设置库路径来调用库以opencv为例:set(OpenCV_DIR "/usr/local/opencv341/share/OpenCV")target_link_libraries(${OpenCV_LIBS})即可。二,设置自动寻找库路径以eigen3为例:find_package(Eigen3 QUIET)if(NOT EIGEN3_FOUND)...原创 2018-11-13 10:12:47 · 416 阅读 · 0 评论 -
【自我修养】理解static关键字的使用
static即静态的意思,有三个作用:1,在函数体内,静态变量有记忆功能,一个被声明为静态的变量在这一函数被调用的过程中其值维持不变。可以用来在函数间共享数据。2,无论是函数还是变量被static修饰,就成了本地全局变量或函数,作用域是本文件内。即static变量/函数可以被本文件内所有函数调用,不能被其他文件调用。如果要在本文件以外使用,在头文件中用extern说明。3,static原创 2016-10-08 09:58:25 · 435 阅读 · 0 评论 -
【自我修养】不要嘻嘻哈哈的在头文件中定义变量
在头文件中直接定义变量甚至定义加上赋值,是非常没有修养的行为,新手是经常这样干,有的老手也不注意,这是不应该的。在头文件中定义变量会出现这些问题:1,出现变量重复定义的错误。如果你在头文件中定义了变量,而这个头文件被多个文件引用了,那么就可能出现重复定义。你可能会在编译的时候遇到这样的错误提示:引用的XXX在XXXX.o文件中已经定义,这就出现了重复定义。2,造成空间资源浪费。在头原创 2016-10-08 09:34:34 · 693 阅读 · 0 评论 -
利用讯飞语音识别技术开发离线语音控制系统(Windows平台)
本项目是做出的产品是一个很大的一个Windows下的增强现实系统,产品功能已经基本完善,考虑到给用户带来更好的体验,故综合评估后采用讯飞语音识别方案进行嫁接。项目介绍:1)打开系统时启动语音识别,检测到用户说出关键词(如:上一步,下一步,结束等)时,系统自动进行相应的操作;2)不需要按任何按键进行连续的语音识别控制,延迟为2秒左右;3)可以识别词语,句子,中文,英文数字字母通吃,不限语速。并且原创 2016-10-07 21:18:45 · 40068 阅读 · 40 评论 -
visual studio中提示无法解析的外部符号的解决方案
编译出现错误:1>------ 已启动生成:项目: MarkerAR, 配置: Debug Win32 ------1>main.obj : warning LNK4075:忽略“/EDITANDCONTINUE”(由于“/SAFESEH”规范)1> 正在创建库 bin\MarkerAR_debug.lib和对象 bin\MarkerAR_debug.exp1>m原创 2016-03-24 15:22:32 · 26679 阅读 · 1 评论 -
VS中DEBUG和RELEASE运行结果不一样
在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当头一棒啊,可是疼归疼,问题总要解决,下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋转载 2016-08-04 16:14:13 · 20802 阅读 · 1 评论 -
WaitForMultipleObjects用法详解,一看就懵
WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象 WAIT_ABANDONED_0:所有对象都发出消息,而且其中有一个或多个属于互斥体(一旦拥有它们的进程中止,就会发出信号) WAIT_TIMEOUT:对象保持未发信号的状态,但规定的等待超时时间已经超过 WAIT_OBJECT_0:所有对象都发出信号 WAIT_IO_COMPLETION:(仅适用于WaitForMultipleObjectsEx)由于一个I/O完原创 2016-09-07 09:16:09 · 49768 阅读 · 2 评论 -
strncat用法举例,一看就懂
#include #include int main(void) { char dest[10] = "Hello"; char src[20] = "World"; strncat(dest, src, 50); printf("%s\n", dest); return 0; }//【运行结果】:HelloWor原创 2016-09-07 09:59:56 · 5351 阅读 · 1 评论 -
C与C++的区别
C++与C有什么不同呢?我们现在一步步地来分析一下 一、类,类我并不说它有什么不好,但是对于初学者,它是一个累赘。类的封装使得初学者对程序产生厌倦,感到不适和麻烦。 二、引用,引用是C++中最臭屁的东西了,最好尽量不要用它,我就是从来不用引用,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪个是引用,哪个是变量。 三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会使初学者潜意转载 2016-09-26 20:38:29 · 954 阅读 · 1 评论 -
c++ 与C#比较
对于新手来讲vc比c#难很多(入门学习)实现同样的功能,vc的代码量要比c#多很多对于高手来讲他要考虑是项目的需求是要程序运行速度快的那种,还是开发速度快的那种 C#不需要用到麻烦的mfc类,不需要头疼的*.h…… C#基于FrameWork,你可以调用FrameWork封装的类,当然也可以用api. 不过C#的执行通过了虚拟机,执行起来比VC要慢:转载 2016-09-27 11:17:10 · 4230 阅读 · 1 评论 -
C++,C#,VC,VC.net,java以及VC++有什么区别和联系?
C++ C# VC VC.net以及VC++有什么区别和联系?(2007-04-25 09:27:56)转载 C/C++是编程语言,C是C++的爸爸,也就是说C++从C发展而来,而C++完全兼容C的语法.国际上有一个专门管理C++的机构,它们负责C++的标准制定.VC++是微软公司的C++编译环境,使用它可以极大的提高编程速度.C#是微软的一种高级编程语言,是微软自己制定的标转载 2016-09-27 11:22:07 · 5406 阅读 · 1 评论 -
【艺术之道】一次性看懂for,foreach和map数组、map向量的用法
/*初级篇:简单数组中for和foreach的用法*/ int nums[3] = { 0, 1, 2 }; for (int num : nums) { cout << num << ","; } for each (int num in nums) { cout << num << ","; } cout << endl; //输出为:0,1,2,0,1,2,/原创 2016-10-24 09:35:09 · 1487 阅读 · 0 评论 -
【艺术之道】如何测代码的实时性,程序耗时计算方法
开发项目的时候,需要给出系统软件的实时性如何,标明软件各模块运行耗时。计算时间方法很简单,只需要在所测部分的前和后加入如下代码即可:#include #include #include #include #include #include LARGE_INTEGER nStart; LARGE_INTEGER nStop; LARGE_INTEGER nFreq; Quer原创 2016-10-12 20:13:23 · 1387 阅读 · 0 评论 -
【高效的文件调用与跳转】用XML构建网状数据结构来组织文件
项目描述:一个MP4系统中有许多的按钮、选项。点击这些按钮需要调用许多本地磁盘中的图片、视频、音乐等各种类型的资源文件。解决办法:A,做一个文件系统,比如树形文件系统,在这个系统中按照一定规则嵌套文件夹,不同资源文件按一定规则命名并存放在适当位置,系统做一个文件遍历系统,在不同的点击事件中遍历并提取不同位置的资源文件。B,做一个XML文件,在这里面建立一个网状或链状数据结构,在XML的原创 2016-11-05 11:29:23 · 1205 阅读 · 0 评论