- 博客(26)
- 收藏
- 关注
原创 本地已有项目创建git仓库并上传至Gitee码云
打开项目所在目录,右键菜单【Git Bash Here】,在控制台中进行如下操作:1. 输入命令 “git init”,初始化git仓库;2. 输入命令 “git add .”,将项目中的所有文件add至git仓库(执行后可进入目录根据文件图标判断是否已add成功);3. 输入命令“ git commit -m "1.[配置管理]工程初始化。" ”将更改提交至仓库;4.登陆 Gitee - 基于 Git 的代码托管和研发协作平台,创建与项目同名的仓库;5. 复制仓库地址;6. 在控.
2022-02-28 17:07:56 413
原创 pcl开源库读取文本格式pcd文件过慢问题解决
最近在使用pcl库研究点云处理分析,中间结果以文本格式的pcd文件存储,直接使用pcl::io::loadPCDFile()函数读取文件,遇到了pcd文件读取过慢,耗时太长的问题,当数据量较大时这个问题更加凸显。查阅pcl源代码(pcl-1.10.1)发现,真正执行文本格式pcd文件读取的函数 int pcl::PCDReader::readBodyASCII()中,使用getline()逐行读取文件内容,根据以往经验想当然认为是这行代码拖慢了速度,于是进行一番改造,自己建一个缓冲区(缓冲区长度为204
2021-12-15 15:32:43 2307 3
原创 CGAL多面体布尔运算
需求说明:有立方体的八个顶点坐标,需要判断两个或多个立方体是否有交集。根据百度搜索结果,CGAL可以提供立方体的布尔运算功能,但是需要根据已知的坐标构建该库的多面体对象。以下内容参考博客CGAL多面体布尔运算 - 码农岛CGAL中的Polyhedron并不能直接进行多面体的布尔运算,真正实现布尔运算的结构是CGAL::Nef_polyhedron_3<Kernel>(包含用于二元布尔运算所需要的结构信息),按照CGAL的官方教程,用Polyhedron来构造Nef_Polyhedr.
2021-11-19 14:41:58 2599 1
原创 解决win10上使用mingw编译gdal出现Argument list too long的错误
在windows平台上编译mingw版本的gdal时出现了/bin/ar: Argument list too long的错误,如下图所示,这是ar给出的错误提示。此错误是由于给ar传的参数中包含了太多的绝对路径,修改GNUmakefile文件内容,使传给ar和g++的参数中*.o路径字符串中不包含绝对路径即可。...
2021-11-18 09:36:14 798
原创 mingw版本log4cplus库Qt中编译错误:undefined reference to log4cplus::detail::macro_forced_log ......
在Qt中使用mingw版本的log4cplus库时出现编译错误如下:undefined reference to `log4cplus::detail::macro_forced_log(log4cplus::Logger const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, in
2021-11-18 09:26:53 1344
原创 gdal 2.x GDALLoadRPCFile()无法解析或执行失败问题解决
windows平台使用Visual Studio 编译的 GDAL,由 1.X 升级到 2.X 后,出现GDALLoadRPCFile()函数无法解析的问题,简单地增加 CPL_DLL 导出符后,虽然解决了无法解析的问题,但实际执行时函数返回字符串为空,经过跟踪源码发现该函数使用的参数 (const CPLString& osFilePath)在运行时传值错误,原因不明(猜测与 CPLString 是GDAL自定义的C++类,而非C内置类型有关),导出时因为修改其参数类型为 const char *
2021-09-30 11:39:31 718 4
转载 C/C++的类型安全
原文链接:http://blog.pureisle.net/archives/985.html3什么是类型安全?类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与
2015-08-21 14:45:37 553
转载 临界区,互斥量,信号量,事件的区别
原文链接:http://blog.csdn.net/bao_qibiao/article/details/4516196四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知
2015-07-27 09:56:33 494
转载 散列函数的构造方法
原文链接:http://www.cnblogs.com/zhuyf87/archive/2012/12/17/2821785.html好的散列函数要求:(1)计算简单,至少散列函数的计算时间不应该超过其他查找技术与关键字比较的时间;(2)计算出的散列地址分布均匀,这样可以保证存储空间的有效利用,并减少为处理冲突而耗费的时间。1. 直接定址法取关键字或关键字的某个线性函数值为
2015-07-23 12:25:58 656
转载 浅析AOP与OOP
原文链接:http://blog.csdn.net/a1314517love/article/details/11847087AOP为Aspect OrientedProgramming的缩写,意为面向切面编程。那什么又是面向切面?它与仅有一字之差的OOP又有着什么样的区别与联系?所谓的面向切面编程其实是对业务逻辑又进行了进一步的抽取,将多种业务逻辑中的公用部分抽取出来做成一种服务(比如日
2015-07-23 10:10:25 606
转载 C++ 虚函数表解析
原文链接:http://blog.csdn.net/haoel/article/details/1948051/前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技
2015-07-22 19:33:31 542
转载 如何将a、b的值进行交换,并且不使用任何中间变量?
可以采用a、b之间的加减运算来实现:a = a + b; b = a- b; a = a - b;这样做的缺点是如果a、b是比较大的两个数,进行相加求和时就会超界。用异或(位运算符^,也即互斥,对应位只有一个为1时结果为1,否则为0)则不用担心越界问题:a = a^b; b = a^b; a = a^b;注: 摘自《程序员面试宝典》
2015-07-22 12:34:07 6971 1
转载 GDAL直接操纵内存中的影像数据的办法
没有一个简单现成的函数可以做到这个,Frank Warmerdam提示了一种办法,使用“内存文件系统”,但不是通常linux下的那种内存文件系统,而是GDAL自定义的。首先需要安装一个内存文件处理器这个特殊的文件处理器可以将一段内存块作为文件处理,这些文件位于"/vsimem/" 目录下(不用找了,在shell下是看不到的),也就是说该目录下的所有文件都被GDAL的内存文件处理器处理。
2014-09-15 14:55:45 2909
转载 std::vector删除重复元素和查找
原文网址:http://blog.csdn.net/nowen/article/details/5509525需要这样一个容器,可以自动地删除重复元素,并能很方便地进行查找操作!似乎采用树型结构存储的std::set是最佳之选,但到后面才发现,存进去容易,取出来麻烦。不得已又回去用std::vector,就在网上找了找,vector是如何实现类似set的unique和f
2013-02-19 11:48:32 19080 1
转载 迭代器(iterator)与逆向迭代器(reverse_iterator)的转换
迭代器(iterator)转逆向迭代器(reverse_iterator),只需要把迭代器转入逆向迭代器的构造函数即可;逆向迭代器转迭代器,调用逆向迭代器的base成员函数即可。int main(){ list coll; for(int i = 1; i <= 9; ++i) coll.push_back(i); list::iterator itPos; itPo
2013-02-07 15:49:34 2829
转载 stl string常用函数
原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52f7string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,str
2013-01-26 11:22:45 475
原创 使用OpenCV实现内存中图像数据的RGB-->HSV转换
问题:内存中已有图像灰度数据(24位真彩色,一整幅图像或一幅图像的某块区域),使用OpenCV实现对这些图像数据颜色空间由RGB到HSV的转换解决: BOOL RGB2HSV() { //lBlockWidth、nBlockHeight分别为图像数据块的宽高 //创建图像矩阵 CvMat* matSrc = cvCreateMat(nBlock
2012-08-31 18:24:27 4263
转载 多个数据求平均数防止溢出
问题:有数组Val[n],Sum = Val[0] + Val[1] + …… + Val[n-1],求average = Sum/n,当n很大时,Sum可能的溢出怎么处理?解决:double ever;for (i = 1, ever = src[0]; i { ever = ever + (src[i] - ever) / (i + 1);} 比如:
2012-08-29 21:38:04 3619
原创 bat批处理文件中常用命令释疑
1. 【echo】——本身是显示的意思,但是【echo off】一般用在批处理文件中,他的作用是在【echo off】之后的命令执行时信息不再被显示在屏幕中,好像后台执行一样。如果连【echo off】都不想被显示的话,再在前面加一个@,成了【@echo off】那就彻底不显示了。2. 【cd \ 】——退回到根目录下。3. 【&】——执行完左边的命令,再接着执行下面的命令。4. 【c
2012-08-22 22:06:08 714
原创 EnableWindow(FALSE)导致对话框置底?
当对话框上的某项操作导致长时间的计算或处理,需要用户长时间等待时,我们往往会调用EnableWindow(FALSE)使对话框上的控件不可用,防止在处理过程中用户对控件进行操作导致程序异常。 但是EnableWindow(FALSE)会导致对话框置底,如果恰好在调用该语句后又要以多线程方式弹出进度条,就可能导致当前对话框突然消失的闪屏假象出现。
2012-08-18 09:12:03 1893
原创 GDAL的GDALDataset::GetGeoTransform()函数
GDALDataset中有函数GetGeoTransform(),函数声明为: CPLErr GDALDataset::GetGeoTransform ( double * padfTransform )。 GDAL官网对该函数说明为: Fetch the affine transformation coefficients. Fet
2012-08-03 19:06:52 26365 9
转载 string 大小写转换
C++的Standard Library並沒有提供將std::string轉成大寫和小寫的功能,只有在提供將char轉成大寫(toupper)和小寫(tolower)的功能而已,在此利用STL的transform配合toupper/tolower,完成std::string轉換大(小)寫的功能,也看到Generics的威力,一個transform function,可以適用於任何型別,且只要自己提
2012-07-20 22:54:27 4006
转载 STL string常用函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常stri
2012-07-20 22:32:29 630
转载 GDAL API入门
原文: http://www.gdal.org/gdal_tutorial.html 打开文件 在打开GDAL所支持的光栅数据之前需要注册驱动。这里的驱动是针对GDAL支持的所有数据格式。通常可以通过调用GDALAllRegister()函数来注册所有已知的驱动,同时也包含那些用GDALDriverManager::AutoLoadDrivers()从.so文件中自动装
2012-07-20 12:02:21 5873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人