![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记心得
文章平均质量分 63
鸿儒517
积跬步以至千里,积小流以成江海!
展开
-
github国内加速访问有效方法
这里只介绍实测最有效的一种方法,修改主机的Hosts文件,如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。原创 2024-06-17 18:23:45 · 377 阅读 · 0 评论 -
关于ENVI遥感影像的hdr元数据信息设置与读取(C++ 、Python)
最近在做遥感影像高光谱纠正部分,要求输出ENVI格式(*.img),ENVI格式影像一般包括img文件(*.img)和hdr文件(*.hdr)两部分组成。原创 2024-04-23 13:04:17 · 445 阅读 · 2 评论 -
python加速方法:GPU加速(numba库)Demo及编写注意事项
上周使用GPU加速了一个算法,效果特别惊艳,由于算法代码本身没有太大参考价值,所以这里只记录了一些心得体会,以便后续遇到问题进行参考排查。原创 2023-11-27 09:22:35 · 798 阅读 · 3 评论 -
C++多线程编程(第四章 案例1:base16编码,C++11和C++17 多核并行计算样例)
release版本优化的比较多,之所以C++17耗时较长原因是进入多线程次数远远大于C++11,C++11只进入了12次,而C++17采用lambda表达式函数,进入了TestNumber次。原创 2023-10-16 18:52:00 · 221 阅读 · 0 评论 -
C++多线程编程(第四章 多线程future相关)
ackaged_task包装函数为一个对象,用于异步调用,其返回值能通过std::future对象访问。C++11 异步运行一个函数,并返回保有其结果的std::future。与bind的区别,可以不调用,函数访问和获取返回值分开调用。std::future提供访问异步操作结果的机制。promise用于异步传输变量。下面代码中还包含了是否超时判断。原创 2023-09-08 18:12:07 · 133 阅读 · 0 评论 -
C++多线程编程(第三章 案例3:把案例1改装成案例2的条件变量多线程方式)
由于案例1采用等待循环方式进行写入,如果更换成案例2的条件多线程方式,效率会大大增加,下面开始写出新的代码吧。原创 2023-09-08 17:49:10 · 367 阅读 · 0 评论 -
C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)
1、获取std::mutex(常用std::unique_lock)消费者阻塞等待信号,获取信号后消费产品(取出list队列中数据)期间出差了一个月,没有时间学习,今天开始又继续学习和做笔记了…上工作的std::condition_variable。等待中,增加了时延和开销,用条件变量就很快及时处理。生产者和消费者共享资源变量(list队列);生产者生产一个产品,通知消费者消费;只在std::unique_lock。2、在获取锁时进行修改;3、释放锁并通知读取线程。原创 2023-09-08 08:59:18 · 474 阅读 · 0 评论 -
SVN配置使用(钩子配置、updata忽略指定文件)
SVN钩子就是一个脚本,在SVN更新前、后、或者变化前后等等状态,触发的脚本。据此可以有多种用途,如:1、在版本提交前要求必须对更新进行说明,而且可以设置最小字数长度。2、在版本提交后想自动把这个SVN更新同步到另一个服务器上,避免这个服务器挂了造成代码丢失的无法挽回损失等等,很多用途。看了上面两个链接基本懂了,前期同步的时候看第一个链接(新手配置的时候注意看评论,要不然复现可能有问题),要忽略指定文件或者后缀重点看第二个链接。在用上述方法规避一些目录后,想把规避的目录再次update出来。原创 2023-02-27 18:33:35 · 674 阅读 · 0 评论 -
C++ 优先级队列的vector实现
队列大家很熟悉,可以用vector数据结构存储,优先队列可能新手不怎么熟悉(老兵可以略过本文)原创 2023-01-13 10:10:25 · 996 阅读 · 0 评论 -
C++ map 非常量引用得初始值必须为左值
具体原因没有深究,但由于该错误发生了两次,为了长记性,特此记录!——辉 2022.12.8。解决方案:将属性 -> C/C++ -> 符合模式 -> 否。原创 2022-12-08 15:45:40 · 327 阅读 · 1 评论 -
编译支持JPEG2000压缩格式的GDAL(ECW库、OpenJPEG)
默认编译的GDAL不能解析JPG2000格式的影像,由于工作需要,我们的程序需要支持*.jp2格式,需要使用其他库来编译到GDAL里面进行辅助解析原创 2022-11-10 18:07:32 · 2096 阅读 · 2 评论 -
QT环境配置
从QTCreator 和VS2017 两个方面记录QT环境的配置:参考链接:MSVC编译器介绍QT 安装及组件选择坑1:直接安装后,QTCreator无法进行debug调试Unable to create a debugging engine解决方案:https://blog.csdn.net/xuw_xy/article/details/107442068主要原因是要修改Qt 在 VS2017 上的安装配置:https://blog.csdn.net/stitchD/article/detail原创 2022-08-26 14:46:14 · 969 阅读 · 0 评论 -
docker基本使用总结
docker 的好处开箱即用,一次配置环境,后续永无后顾之忧;学习docker首先要明白镜像与容器的区别,该文是在了解这两者区别基础上给出了一些常用命令的操作。原创 2022-08-15 09:56:43 · 412 阅读 · 0 评论 -
github本地账户入门配置
Linux github本地账户配置,版本控制入门原创 2022-08-10 14:26:00 · 183 阅读 · 0 评论 -
C++ string replace操作
C++ string replace操作本来网上有很多,但是按其操作有坑,编译提示语法错误。原创 2022-08-05 13:08:17 · 4743 阅读 · 0 评论 -
python三种虚拟环境安装方法和tensorflow1.12安装
目录1、使用virtualenvwrapper-win配置虚拟环境2、使用virtualenv包安装虚拟环境3、使用conda安装虚拟环境4、配置tensorflow 环境虚拟环境安装有三种方式,都比较简单,都测试没啥问题。我暂时使用的是第三种方式1、使用virtualenvwrapper-win配置虚拟环境参考链接:Python虚拟环境的搭建#1、安装 virtualenvwrapper-win 包pip install virtualenvwrapper-win#2、查看虚拟环境work原创 2021-08-06 15:12:11 · 3076 阅读 · 0 评论 -
C++ 二分法算法查找返回Array最近的值
使用二分法进行查找返回Array最近值,支持float类型、int类型等各种数据类型。原创 2022-07-22 17:01:41 · 620 阅读 · 0 评论 -
HDF5 windows编译 release版本、Debug版本
由于最近急需的一个项目,需要hdf5库,误打误撞,编译成功。特此记录官网下载地址:https://portal.hdfgroup.org/display/support/HDF5+1.12.2#files找到如下地址,本人电脑有cmake软件,我下载了Cmake版本和源代码版本同时进行了,事实上我也下载了源码进行cmake手工编译,但是不如直接下载CMake版本的来的方便,所以这里我直接记录了Cmake版本的编译方法如果下载不了,可以通过该链接进行下载如果不想看怎么编译,可以从这里下载我编译好的库1、下原创 2022-07-10 15:16:52 · 899 阅读 · 0 评论 -
直方图均衡化算法、直方图匹配算法 C++ 代码
这两天一直在研究云光匀色算法才了解到了直方图匹配算法,想要了解这个算法又要先了解直方图均衡化算法,通过网上查找了很多资料,没有现成C++代码,经过仔细思考和实验后大概复现了该算法。特此记录,以备查阅参考链接如下:1、匀光匀色–直方图匹配算法实现与应用2、基于OpenCV的直方图匹配3、直方图均衡化的数学原理先介绍一下基本概念原始数据底图影像直方图匹配匀光匀色效果从上图可以看出原始影像与模板颜色不一致,经过直方图匹配匀光匀色后颜色一致性较好。先看看直方图均衡算法原理知识:先在根据上原创 2022-06-18 17:31:51 · 2940 阅读 · 4 评论 -
已知四角经纬度判断是否有重叠(不用geos库)
已知四角经纬度判断是否有重叠。本来以前有一个依赖geos库的代码,但是现在用的gdal又没有geos库,无赖之下网上搜索了一些资料重新写了一个。四角经纬度的多边形可以分为两种类型:1、四角为矩形,这个判断比较简单;2、四角不为矩形,可能是平行四边形或者其他形状的四边形;两个四角为平行四边形或者其他多边形,判断是否重叠这里我参考了一个链接:判断两条线段是否相交以及点是否在四边形内的C++算法上面文章里面有判断线是否有相交算法、点是否在面内算法。据此我整理了一下下面代码是上面博客的核心代码,我增加了一个.原创 2022-06-08 16:44:15 · 681 阅读 · 0 评论 -
使用OpenCV Mat对图片低频信息、高频信息提取及无损还原(高斯模糊、做差、求和)
为了还原一篇论文。里面用到了提取图像的低频信息、高频信息、及还原技术。现在使用opencv进行复现,里面有一些注意事项特此记录参考链接:OpenCV中对Mat矩阵加、减、乘、除、转置等操作的总结OpenCV两个Mat相减的隐藏秘密opencv学习笔记(四)——模糊(均值,高斯,双边)其实提取一张图像的低频、高频信息原理比较简单,但是不注意的时候还原出来的影像总有一些像素值对不上(特别是边缘像素)。影像的低频和高频信息可用如下数学模型表述:I=L+H其中I表示影像,L和H分别表示影像对应的低频原创 2022-05-19 11:21:20 · 3468 阅读 · 0 评论 -
利用gdal的RasterIO进行最近邻、双线性、三次卷积重采样的重采样
下面是根据《GDAL源码剖析与开发指南》上面对RasterIO的常规用法,该书使用的gdal版本比较老,新版的gdal版本已经可以支持RasterIO进行最近邻、双线性、三次卷积重采样的重采样(具体从哪个版本改的我也不知道),具体方法在文末。先根据该书介绍gdal常规的做法:根据上面描述,我们进行第七个参数和第八个参数的更改则可以进行调整输出影像大小,如果不设置算法参数,我测试也可以输出大影像,但是效果不是很好。但是怎么指定是使用最近邻、双线性、三次卷积重采样在新版本是有方法的,具体如下:1、定义原创 2022-05-11 10:04:54 · 2255 阅读 · 0 评论 -
使用opencv被360软件坑的一天
这事前段时间发生的,记录一下这个问题吧,供来者参阅:bug:报错是:无法定位程序输入点H5P_CLS_LINK_ACCESS_ID_g于动态链接库XXXX\opencv_world401.dll如下图:opencv_world401.dll这个动态库是opencv401版本的核心动态库,就不多说了。经过检查该exe同级目录下存在该动态库、提示的这个路径下也存在该动态库,该程序在控制台运行或者vs2017 debug的时候也出现该bug检查了很久原因没有找到,后来经过检查把360退出后,重启v原创 2022-05-11 09:00:09 · 660 阅读 · 3 评论 -
gdal、geos的 windows编译 openCL加速
由于最近在使用gdal的纠正功能,发现自带方法特别慢,经过研究发现以前的编译没有使用OpenGL的GPU加速功能,不得己重新编译一次完整的gdal库,特此记录。gdal官方下载地址:http://download.osgeo.原创 2022-05-04 22:00:10 · 1696 阅读 · 0 评论 -
C++ 输出打乱的vector
参考链接:【洗牌算法】C++将数组的元素顺序随机打乱(条件概率证明算法充分随机)使用模板类封装,输出打乱的vectortemplate <class T>vector<T> RandomVectorV2(vector<T>oldArray) //, vector<T> &newArray{//返回打乱vector。zph 2022.3.26 vector<T> newArray; // 随机打乱 for (int i = o原创 2022-03-27 22:53:24 · 2306 阅读 · 0 评论 -
python Kmeans报错及解决方法
在利用Kmeans方法进行聚类的时候出现了以下错误,我默认设置的是分100类,数据也有100多条,在聚类过程中有如下报错:ConvergenceWarning: Number of distinct clusters (99) found smaller than n_clusters (100). Possibly due to duplicate points in X.首先定位出错代码:kmeans = KMeans(n_clusters=k, random_state=2018)kmean原创 2022-03-22 16:05:07 · 5150 阅读 · 2 评论 -
C++中关于宏定义函数需注意的
C++ 中宏定义函数使用比较方便,主要优点:代码量少,执行速度快,其原理就是用所定义的数字进行替换得到,看下面例子#include <stdio.h>#define pow2(x) x*x#define pow3(x) (x)*(x)int main(){ printf("4的平方:%d\n", pow2(4)); printf("3+1的平方:%d\n", pow2(3+1)); printf("3+1的平方:%d\n", pow3(3+1));}运行结果:如果原创 2022-03-13 17:04:58 · 847 阅读 · 0 评论 -
C++ string获取文件路径文件名、文件路径、文件后缀(两种方式)
windows路径有两种方式,一种正斜杠,一种反斜杠都可以表示路径,该方法可以支持这两种表达方法string path1 = "D:/datas/FusionTestData/datas/GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"string path2 = "D:\datas\FusionTestData\datas\GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"stri原创 2022-02-23 18:28:38 · 9761 阅读 · 1 评论 -
CUDA编程上的OpenMP异步
CU文件上的openMP 设置原创 2022-02-23 15:14:49 · 331 阅读 · 0 评论 -
CUDA编程学习<2>——归约算法的7种优化方法详解
参考链接:CUDA学习(归约算法)根据上面文章中的PPT链接,进行了深入研究。原文章只介绍了归约算法的一般形式,而PPT中则对比了几种归约算法,但是PPT写的不够完整,不便于系统的运行起来。为了学习CUDA及其优化技巧,特此整理Nvidia官网归约ppt (英文)中文PPT关于代码核函数的部分可以参阅我的博客:CUDA编程学习——关于核函数ID获取公式硬件信息实验机器硬件:通过硬件信息可以看出几个重要信息:理论带宽(bandwidth):192GB/s此显卡每秒渲染像素数量(Pixe原创 2022-02-16 11:05:31 · 1342 阅读 · 5 评论 -
CUDA编程学习——关于核函数ID获取公式
最近在学习CUDA编程,主要阅读了下面一些文章1、CUDA编程十篇(重要的看前八篇就差不多了)2、cuda从入门到精通(三)之核函数和参数配置3、CUDA 线程ID 计算方式通过第一个链接的学习,可以简单写出CUDA代码,但其ID号只是一维的。在实战方面,多用三维,所以为了整理清ID的意思,为此看下面两个链接。现在根据我自己的理解和测试,进行了整理核函数的线程定义方式1、1维核函数ID定义方式1.1、核函数定义及调用:hello_from_gpu << <2, 4 >原创 2022-01-11 14:32:05 · 624 阅读 · 0 评论 -
C++关注内存及硬盘占用情况
今天测试多线程异步处理数据,发现程序很容易崩溃掉。主要原因事在异步的时候加载数据,加载的总数据量远远大于本身内存导致的。所以搜索找到一些关注内存占用的代码,以后在处理多线程的时候可能用到条件锁,防止爆内存情况代码如下:#include<windows.h>BOOL CheckResource(){ MEMORYSTATUSEX statex; statex.dwLength = sizeof(statex); GlobalMemoryStatusEx(&statex);原创 2021-12-22 16:16:06 · 664 阅读 · 0 评论 -
python多线程异步(一)
一直想写一个多线程博客,汇总一下方老师教给我们的知识。但是因为一直没有用到,或者自己还没有吃透里面的精髓,所以不敢下笔。现在工作中又遇到必须要通过多线程解决的问题,所以再回顾以前方老师的课程,从头整理一下多线程异步这块知识,方便以后遇到问题可以快速写出代码来。目录1、多线程异步初步介绍1.1一般的异步demo1.2傀儡线程2、线程锁2.1、为什么要锁2.2、不加锁代码2.3、加锁代码3、条件锁1、多线程异步初步介绍串行和异步模式如下图,从图上可以很直观看出串行变成和异步编程区别python 中线程原创 2021-11-28 22:39:29 · 5096 阅读 · 1 评论 -
python 切换工作目录执行程序
遇到一个问题是这样,要从python调用C++ 编译的dll,经过测试已经运行OK了,但是在实际部署的时候发现,运行这个py文件必须要在py文件所在的目录进行运行,否则Dll加载的时候出问题错误如下:Traceback (most recent call last): File "E:\03_study\WanMen\pytorch_study\My_Code\GetImageBoundary\WKK_zph\ChangeSeg_V1.0.py", line 51, in <module>原创 2021-11-17 14:15:53 · 4518 阅读 · 0 评论 -
C++ Dll导出及python调用C++ DLL
目录1、C++ Dll 编译导出1.1、VS工程属性更改1.2、代码更改1.3、导出dll2、python 调用Dll样例2.1 代码简单调用2.2 调用的时候传参方式2.3改装代码1:2.3改装代码2:缘由:由于在使用gdal的时候作矢量求交输出的时候python没用对应api,所以用C++对应的函数编译成dll,用python进行调用。使用环境:1、Visual Studio 20172、Pycharm参考链接:1、Python 调用DLL动态链接库——ctypes使用2、python 调原创 2021-11-16 10:09:05 · 2553 阅读 · 0 评论 -
numpy元素替换
可以参考下面帖子(没有测试代码,看着有点费劲):https://blog.csdn.net/weixin_39616090/article/details/110774051如果想把numpy数据修建到某个值范围内,可以使用clip方法,参考我的这篇帖子numpy 元素替换,可以使用最笨的方法,for循环等等方法。我这里要说的是使用numpy自带方法,适合于批量大的ndarray进行使用测试代码:import numpy as npa = np.array([3,2,1,4,5,3,32,9,原创 2021-11-03 11:36:37 · 3471 阅读 · 0 评论 -
Linux基本操作
以前搞个小本本做的笔记,有时候笔记本找不到,很多命令也记不全,故此记录一些较为常用的基本操作目录1、查看Linux系统命令2、查看硬盘空间3、压缩包操作4、搜索(定位)文件各种方法5、删除文件6、修改保存环境变量7、vim文本操作1、查看Linux系统命令cat /proc/versionuname -alsb_release -a2、查看硬盘空间2.1查看硬盘空间df -h2.2 查看当前文件夹下各文件占用空间大小du -sh *2.3查看总磁盘,可以查看哪个文件占用大原创 2021-10-12 18:21:09 · 988 阅读 · 0 评论 -
python 虚拟环境打包exe方法及路过的坑
目录1、虚拟环境打包1.1打包流程1.2参考资料2、打成功但是运行出错2.1问题分析:2.2、修改spec文件后重新打包2.3、设置虚拟环境的环境变量后重新打包2.4、降低问题包的版本后重新打包这是个python 打包的问题,关于python打包心得更多了,小白打包往往把一个很简单的程序打包成几百兆,但是现在我觉得完全没用必要。打包也可以很简单,方法如下:1、虚拟环境打包1.1打包流程1、分析代码,用到了哪些依赖包;2、新建一个虚拟环境,然后把需要的包安装上;3、激活虚拟环境,在虚拟环境上测试,原创 2021-09-03 11:18:50 · 2554 阅读 · 4 评论 -
C3017 OpenMP“for“语句中的终止测试格式不正确
记录一个OpenMP中的异常这里增加一个并行,编译出现下面错误原因分析:网上查了很多资料都没有,一直没有注意到CellRect.height()返回的是double类型,后来拆开才是下面代码,然后进一步测试解决改问题。问题解决:解决方案只用将终止条件的CellRect_H 改为int类型即可解决改问题。更改前:更改后问题解决:特此记录 2021.8.26...原创 2021-08-26 11:34:57 · 1064 阅读 · 0 评论 -
[python] Sklearn(一)之最小二乘法
最小二乘法是一个很实用的工具,它的概念很容易理解,但用程序实现几个矩阵乘法有可能很容易搞错了,但是会python就啥都会了,难道不是么。废话不多说,上代码一、基础版的最小二乘法demofrom sklearn import linear_modelreg = linear_model.LinearRegression()#reg.fit([(0,0),(1,1),(2,2)],[0,1,2])#拟合,写法1X=[(0,0),(1,1),(2,2)]Y=[0,1,2]reg.fit(X,Y)#原创 2021-08-23 22:32:04 · 2498 阅读 · 0 评论