自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

静以修身,简以养德

天地不仁以万物为刍狗,圣人不仁以百姓为刍狗

  • 博客(119)
  • 资源 (20)
  • 收藏
  • 关注

原创 OpenMP for并行执行任务中加锁与解锁

利用OpenMP进行并行加速操作简单,但是在并行代码中有时候需要加锁进行顺序执行,如果多个线程同时进入会导致程序执行异常。3、在并行代码中,想要顺序执行的代码或者函数前,获取互斥器(上锁);5、并行代码出来后,销毁锁。4、释放互斥器(解锁)

2024-03-22 09:26:46 230

原创 python代码的保护之Pyarmor(一)

我们在用python程序开发完程序后,进行程序发布。发布后要保证算法的安全性,常常需要对代码进行保护,通过这段时间的搜集整理,目前常见的保护方式有:代码混淆加密、编译成二进制动态库、2、支持许可加密,可以设置使用期限、绑定网卡等信息(详见:参考链接3);加密后的输出会在运行目录下的dist文件夹。1、很方便对批量代码进行加密;本篇讲述Pyarmor加密。3、加密安全性较高;

2024-01-20 18:24:54 571

转载 点的转换矩阵(平移、缩放、旋转)

参考链接:【深度好文】3D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)

2024-01-20 15:33:01 49

原创 GDAL的GDALWarpOptions结构体设置

GDAL的GDALWarpOptions结构体设置可以通过头文件很容易查阅到,但是里面第一个变量char **papszWarpOptions;

2024-01-12 11:23:51 427

原创 Winserver配置多用户同时登录方式

与此计算机的连接数量是有限的,现在已经使用所有连接。请尝试稍后连接或与系统管理员联系。可以用多个电脑,不同的用户名同时远程连接这个电脑。2、在运行框中输入gpedit.msc,点击确定。4、再依次选择:鼠标双击“限制连接的数量”1、Win+R 启动运行;5、继续配置最大连接数个数。进入系统后,运行策略。

2023-12-27 16:21:26 2007 2

原创 python加速方法:纯CPU多进程加速(joblib库)

上面列了不少好处,但是jobLib多进程运行效率相当高,但是不好调试,所以写的时候要搞清楚其并行原理,写好正常执行代码,最后改装成joblib即可。python是个好东西,苦恼于密级计算的时候只能使用单核,使用多线程不奏效,因为毕竟它受限于语言本身,于是搜索过程中看见了下图,一声苦笑。通过上面可以看出,jobLib的耗时最短,其代码写法及类似于C++ 的OpenMP加速方法。按此方法进行了两个函数加速,查看CPU使用效率图,如下图,结果是不是相当哇塞。等等joblib什么鬼,为啥它能实现多进程,请参考。

2023-12-05 12:11:13 276

原创 python加速方法:GPU加速(numba库)Demo及编写注意事项

上周使用GPU加速了一个算法,效果特别惊艳,由于算法代码本身没有太大参考价值,所以这里只记录了一些心得体会,以便后续遇到问题进行参考排查。

2023-11-27 09:22:35 512

原创 GDAL Creation Options设置

GDAL 创建影像设置

2023-10-18 14:31:20 278

原创 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 185

原创 GDAL Linux离线源码编译(附源码及编译步骤)

参考链接:gdal-3.1.2 linux(Ubuntu) 编译 附SQLite3 PROJ6编译工作中经常会进行程序部署,软硬件系统变化程序都需要重新编译进行适配:armCPU、X86CPU 、Ubuntu系统、Redhat、CentOS系统等等都需要重新编译库安装包源码下载点击【这里(免积分下载)】包含:1、sqlite-autoconf-3360000.tar.gz2、tiff-4.2.0.tar.gz3、curl-7.71.1.tar.gz4、proj-7.1.0.tar.gz5、

2023-09-26 17:19:01 401

原创 C++多线程编程(第四章 多线程future相关)

ackaged_task包装函数为一个对象,用于异步调用,其返回值能通过std::future对象访问。C++11 异步运行一个函数,并返回保有其结果的std::future。与bind的区别,可以不调用,函数访问和获取返回值分开调用。std::future提供访问异步操作结果的机制。promise用于异步传输变量。下面代码中还包含了是否超时判断。

2023-09-08 18:12:07 128

原创 C++多线程编程(第三章 案例3:把案例1改装成案例2的条件变量多线程方式)

由于案例1采用等待循环方式进行写入,如果更换成案例2的条件多线程方式,效率会大大增加,下面开始写出新的代码吧。

2023-09-08 17:49:10 362

原创 C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)

1、获取std::mutex(常用std::unique_lock)消费者阻塞等待信号,获取信号后消费产品(取出list队列中数据)期间出差了一个月,没有时间学习,今天开始又继续学习和做笔记了…上工作的std::condition_variable。等待中,增加了时延和开销,用条件变量就很快及时处理。生产者和消费者共享资源变量(list队列);生产者生产一个产品,通知消费者消费;只在std::unique_lock。2、在获取锁时进行修改;3、释放锁并通知读取线程。

2023-09-08 08:59:18 453

原创 C++多线程编程(第三章 案例1,使用互斥锁+ list模拟线程通信)

代码包含了XThread类(基类)、XMsgSever类(消息)、测试主程序。3、通过Unique_lock和mutex互斥方位list 消息队列。主线程和子线程进行list通信,要用到互斥锁,避免同时操作。2、模拟消息服务器线程,接收字符串消息,并模拟处理;1、封装线程基类XThread控制线程启动和停止;4、主线程定时发送消息给子线程;

2023-07-28 10:58:40 910

原创 C++多线程编程(第三章 利用栈特性自动释放锁RALL,锁管理器、控制器)

RALL(resource Acquisition Is Initialization )C++ 之父Bjarne Stroustrup 提出;使用局部对象来管理资源的技术称为资源获取即初始化;它的生命周期是由操作系统来管理的,无需人工介入;资源的销毁容易忘记,造成死锁或者内存泄漏。

2023-07-28 10:01:50 286

原创 C++多线程编程(第二章 多线程通信和同步)

阻塞(Blocked):该线程被阻塞挂起,Blocked状态包括:pend(锁、事件、信号量等阻塞)、suspend(主动pend)、delay(延时阻塞)、pendtime(因为锁、事件、信号量时间等超时等待)共享锁中包含了共享锁和互斥锁,当互斥锁被锁定,所有共享锁都进不去;共享锁中的共享锁,只要在没有锁定共享锁中的互斥锁,共享锁中的共享锁都能进入;可以记录锁获取情况,多次超时,可以记录日志,获取错误情况。解锁后等待1毫秒,让其他线程可以获取到锁,运行结果如下。运行(Running):该线程正在运行;

2023-07-27 09:08:09 94

原创 C++多线程编程(第一章 多线程基本使用)

C++ 11;C++ 14;C++ 17;C++ 20;代码主要为:第一章01~07内容。

2023-07-26 12:13:01 91

转载 GDAL构建遥感影像金字塔和在几种使用场景中的性能对比【转】

留作被查,详见下面链接。

2023-07-25 08:31:42 63

原创 C++中的一些小技巧,numeric_limits、static_cast、reinterpret_cast方法内存验证

在准备求一堆double数据中的最大值最小值的时候,常规做法是预估这堆数据的最大最小值,然后进行比较求,在重构别人代码的时候发现,可以准确知道double类型最大值或者最小值,获取方法如下。C++中的reinterpret_cast主要是将数据从一种类型的转换为另一种类型。C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。此时结果,如下(调试状态,代码执行到下面,调试断点截图未显示)

2023-06-16 10:51:22 423

原创 C++读取文件,避免中文乱码,自动识别UTF8编码还是GBK编码

测试了两个文件,分别是GBK编码和UTF8编码,常规读入UTF8编码会乱码,所以第一步先识别是什么编码,再对应的读取输出即可。避免遗忘,特此记录——辉 2023.6.6。

2023-06-06 18:48:27 1387

原创 C++调用matlab编译动态库方法及相关问题解决

把matlab代码编译成动态库,C++调用matlab生成的动态库。下面测试样例是打开一张图片,成为cv::Mat格式使用matlab引擎(engine.h)加载到matlab进行显示,主要熟悉Matlab engine的使用方式。说明:在使用matlab编译的exe或者dll,移植到一个没有matlab的电脑时可能无法运行,需要在官网上下载对应的运行时进行安装后,程序才能正常执行。把*.m代码编译成C++代码,但是对于有些m代码中使用了有些库文件、调用了非m代码的函数的函数是无法编译成C++源代码。

2023-04-26 22:25:52 2510 1

原创 SVN配置使用(钩子配置、updata忽略指定文件)

SVN钩子就是一个脚本,在SVN更新前、后、或者变化前后等等状态,触发的脚本。据此可以有多种用途,如:1、在版本提交前要求必须对更新进行说明,而且可以设置最小字数长度。2、在版本提交后想自动把这个SVN更新同步到另一个服务器上,避免这个服务器挂了造成代码丢失的无法挽回损失等等,很多用途。看了上面两个链接基本懂了,前期同步的时候看第一个链接(新手配置的时候注意看评论,要不然复现可能有问题),要忽略指定文件或者后缀重点看第二个链接。在用上述方法规避一些目录后,想把规避的目录再次update出来。

2023-02-27 18:33:35 637

原创 C++ 优先级队列的vector实现

队列大家很熟悉,可以用vector数据结构存储,优先队列可能新手不怎么熟悉(老兵可以略过本文)

2023-01-13 10:10:25 943

原创 C++ map 非常量引用得初始值必须为左值

具体原因没有深究,但由于该错误发生了两次,为了长记性,特此记录!——辉 2022.12.8。解决方案:将属性 -> C/C++ -> 符合模式 -> 否。

2022-12-08 15:45:40 312 1

原创 编译支持JPEG2000压缩格式的GDAL(ECW库、OpenJPEG)

默认编译的GDAL不能解析JPG2000格式的影像,由于工作需要,我们的程序需要支持*.jp2格式,需要使用其他库来编译到GDAL里面进行辅助解析

2022-11-10 18:07:32 2010 2

原创 C++ Linux安装gdal及测试demo注意的问题

根据上面的参考链接进行安装gdal没有啥问题,编译后可以输出可执行程序,但是在运行的时候出现提示libgdal.so没有找到。

2022-09-05 13:21:34 827

原创 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 961

原创 docker基本使用总结

docker 的好处开箱即用,一次配置环境,后续永无后顾之忧;学习docker首先要明白镜像与容器的区别,该文是在了解这两者区别基础上给出了一些常用命令的操作。

2022-08-15 09:56:43 339

原创 github本地账户入门配置

Linux github本地账户配置,版本控制入门

2022-08-10 14:26:00 177

原创 python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)&cmd复制文件命令使用

python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)

2022-08-09 21:54:13 1660

原创 C++ string replace操作

C++ string replace操作本来网上有很多,但是按其操作有坑,编译提示语法错误。

2022-08-05 13:08:17 4579

原创 C++ 二分法算法查找返回Array最近的值

使用二分法进行查找返回Array最近值,支持float类型、int类型等各种数据类型。

2022-07-22 17:01:41 603

原创 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 854

原创 直方图均衡化算法、直方图匹配算法 C++ 代码

这两天一直在研究云光匀色算法才了解到了直方图匹配算法,想要了解这个算法又要先了解直方图均衡化算法,通过网上查找了很多资料,没有现成C++代码,经过仔细思考和实验后大概复现了该算法。特此记录,以备查阅参考链接如下:1、匀光匀色–直方图匹配算法实现与应用2、基于OpenCV的直方图匹配3、直方图均衡化的数学原理先介绍一下基本概念原始数据底图影像直方图匹配匀光匀色效果从上图可以看出原始影像与模板颜色不一致,经过直方图匹配匀光匀色后颜色一致性较好。先看看直方图均衡算法原理知识:先在根据上

2022-06-18 17:31:51 2817 4

原创 已知四角经纬度判断是否有重叠(不用geos库)

已知四角经纬度判断是否有重叠。本来以前有一个依赖geos库的代码,但是现在用的gdal又没有geos库,无赖之下网上搜索了一些资料重新写了一个。四角经纬度的多边形可以分为两种类型:1、四角为矩形,这个判断比较简单;2、四角不为矩形,可能是平行四边形或者其他形状的四边形;两个四角为平行四边形或者其他多边形,判断是否重叠这里我参考了一个链接:判断两条线段是否相交以及点是否在四边形内的C++算法上面文章里面有判断线是否有相交算法、点是否在面内算法。据此我整理了一下下面代码是上面博客的核心代码,我增加了一个.

2022-06-08 16:44:15 642

原创 使用OpenCV Mat对图片低频信息、高频信息提取及无损还原(高斯模糊、做差、求和)

为了还原一篇论文。里面用到了提取图像的低频信息、高频信息、及还原技术。现在使用opencv进行复现,里面有一些注意事项特此记录参考链接:OpenCV中对Mat矩阵加、减、乘、除、转置等操作的总结OpenCV两个Mat相减的隐藏秘密opencv学习笔记(四)——模糊(均值,高斯,双边)其实提取一张图像的低频、高频信息原理比较简单,但是不注意的时候还原出来的影像总有一些像素值对不上(特别是边缘像素)。影像的低频和高频信息可用如下数学模型表述:I=L+H其中I表示影像,L和H分别表示影像对应的低频

2022-05-19 11:21:20 3243

原创 利用gdal的RasterIO进行最近邻、双线性、三次卷积重采样的重采样

下面是根据《GDAL源码剖析与开发指南》上面对RasterIO的常规用法,该书使用的gdal版本比较老,新版的gdal版本已经可以支持RasterIO进行最近邻、双线性、三次卷积重采样的重采样(具体从哪个版本改的我也不知道),具体方法在文末。先根据该书介绍gdal常规的做法:根据上面描述,我们进行第七个参数和第八个参数的更改则可以进行调整输出影像大小,如果不设置算法参数,我测试也可以输出大影像,但是效果不是很好。但是怎么指定是使用最近邻、双线性、三次卷积重采样在新版本是有方法的,具体如下:1、定义

2022-05-11 10:04:54 2113

原创 使用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 652 3

原创 gdal、geos的 windows编译 openCL加速

由于最近在使用gdal的纠正功能,发现自带方法特别慢,经过研究发现以前的编译没有使用OpenGL的GPU加速功能,不得己重新编译一次完整的gdal库,特此记录。gdal官方下载地址:http://download.osgeo.

2022-05-04 22:00:10 1636

原创 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 2262

GDAL综合包源码,编译使用

包含: 1、sqlite-autoconf-3360000.tar.gz 2、tiff-4.2.0.tar.gz 3、curl-7.71.1.tar.gz 4、proj-7.1.0.tar.gz 5、geos-3.8.1.tar.bz2 6、gdal-2.4.4.tar.gz 具体编译方法参考我的博客《GDAL Linux离线编译》

2023-09-26

C++读取UTF8编码文件,乱码测试数据

有UTF8编码测试文件和GBK编码测试文件

2023-06-07

opencv4.0.1库,支持匹配

适用于phytium,2000/8 E8c CPU 银河麒麟V10 arm64 aarch64 编入了匹配功能

2023-05-18

编译好的gdal244库(带openjpeg)和单独openjpeg-v2.4.0-windows-x64库

1、编译好的gdal库:gdal+geos+openCL + openjpeg 2、单独编译好的openjpeg库

2022-11-11

GDAL库2.4.4版本(内置其他库包括支持OpenCL纠正+geos352+ECW)

内置其他库包括支持OpenCL纠正+geos352+ECW,开箱即用。 该GDAL版本支持Jpeg2000压缩的格式,支持后缀*.jp2影像 具体编译方法可以参考我的博客:https://blog.csdn.net/weixin_42727069/article/details/127783361

2022-11-10

gdal-2.4.4版本源码及geos-3.5.2源码

gdal-2.4.4版本源码及geos-3.5.2源码,这是配合我的博客进行gdal编译的原始素材 编译带ECW的GDAL:https://blog.csdn.net/weixin_42727069/article/details/127783361

2022-11-10

ECW动态库(编译好的dll,可附加GDAL编译)

ECW动态库支持jpg2000压缩格式的影像,支持*.jp2影像。 详细怎么添加到GDAL的编译方法请参见我的博客 编译带ECW的GDAL:https://blog.csdn.net/weixin_42727069/article/details/127783361

2022-11-10

HDF5库,Windows编译好的库

包括Realse版本和Debug版本

2022-07-10

Hdf5 cmake版本源代码

该版本可以直接用于hdf5库的编译

2022-07-10

gdal2.4.4+geos3.5.2+openCL Windows编译后的库

该编译库包含: gdal2.4.4(gdal204.dll) geos3.5.2 openCL 纠正时支持GPU加速,该版本解决了多项式纠正GPU显存存在内存泄漏问题。

2022-05-06

gdal2.2.0+geos3.5.2+openCL windows编译安装包

该安装包包含: gdal2.2.0(gdal202.dll) geos3.5.2 openCL 纠正时支持GPU加速,该安装包缺点是GPU显存存在内存泄漏,对于小GPU显存容易爆内存。可以下载我的gdal2.4.4的编译版本

2022-05-06

geos3.6.5版本编译后的releas、debug版本

windows编译的geos库,版本:geos3.6.5 包含releas、debug版本

2022-02-09

gcp&Pxy.zip

python学习最小二乘法使用,经纬度转换关系:Lng_OFF = 113.999990991; Lat_OFF = 31.333342342333; Resolution = 1.8018e-05;

2021-08-23

cocoapi.zip

包含cocoapi\PythonAPI,目标检测的时候要用到

2021-08-08

VCForPython27.zip

安装cocoAPI的时候需要用到的依赖

2021-08-08

models-1.12.0.zip

tesorflow的扩展models

2021-08-06

PyQt4-4.11.4-cp37-cp37m-win_amd64.zip

python3.7 64位系统

2021-07-29

LinuxOpencv4.0.1-MatchOK.zip

Linux系统opencv编译 软硬件环境: CPU: interl x86CPU 系统:centos系统 编辑及参考链接:https://blog.csdn.net/weixin_42727069/article/details/113999118

2021-02-26

Linux系统编译源码,opencv4.0.1合集包.zip

包含Linux系统下编译opencv4.0.1的源码,包含了四个模块 1、OpenCV 4.0.1.tar.gz (opencv源码) 2、opencv_contrib-4.0.1.tar.gz(opencv_contrib源码) 3、cmake-3.5.1.tar.gz(cmake安装包) 4、boostdesc_bgm.i等.zip(编译opencv_contrib源码,中途提示缺失部分) 安装教程参考我部署的时候写的一篇博客:https://blog.csdn.net/weixin_42727069/article/details/113999118

2021-02-24

siftGPU中文手册_Test.pdf

siftGPU中文手册_Test.pdf

2021-01-21

Speckle-reduction-master.zip

SAR影像数据处理过程中需要用到的滤波算法,matlab的一些滤波算法封装函数源代码,无其他依赖。 文件中包含滤波算法: Mean filter. -Frost filter. -Modified frost filter(added thresholds). -Lee filter(Using Masks, ENL ect). 如果想要知道怎么操作,欢迎访问我的博客,有一篇记录。 链接:https://blog.csdn.net/weixin_42727069/article/details/105456619

2020-04-11

.cache.rar

编译opencv4.0.1 需要的工具包,解压后放在源代码根目录中进行编译,配合我的另一个工具包合集使用“opencv401编译包合集包”

2020-02-18

opencv401编译包合集.zip

opencv401编译包合集包含如下工具: 1、opencv-4.0.1.zip——opencv源码安装包 2、opencv_contrib-4.0.1.zip——opencv contrib包,需要通过编译增加算法功能包 3、cmake-3.15.7-win64-x64.msi——CMake编译工具 由于上传容量有限,不能超过220M所以还有个.cache.rar文件我单独再传到我的下载资源里面

2020-02-18

opencv&opencv_contrib_build_debug&release.zip

opencv4.0.1带opencv_contrib编译版本,下载下来解压直接配置VS使用,费了九牛二虎之力好不容易编译成功的

2020-02-13

统一一个压缩包ffmpeg&yasm&cmake&opencv.zip

该软件是在redhat linux 系统下配置opencv ,配置方法详见我的博客https://blog.csdn.net/weixin_42727069/article/details/103830577,重点是对opencv打开视频为空的问题提供解决方法。

2020-01-04

OpenCV分解视频-2019-11-29.py

该程序实现批量将视频进行分解成图片,默认会根据视频名称检测视频所在目录下是否存在该名称的文件夹,若没有则用该名称新建一个文件夹,并将分解的图片放在该新建的文件夹中,可以自己设置抽取的帧率

2019-11-29

FWTools(处理地理信息系统数据工具包).rar

GDAL工具包,用于查看大图片,卫星图片。 这是FWTools(处理地理信息系统数据工具包),帮你处理地理信息系统GIS数据和需要查看或转换各种栅格或矢量文件的用户的应用程序的集合。在命令行模式下或使用 FWTools Shell 控制台可以访问应用程序。

2019-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除