- 博客(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
原创 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
原创 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++中的一些小技巧,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++ 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
原创 python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)&cmd复制文件命令使用
python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)
2022-08-09 21:54:13 1660
原创 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综合包源码,编译使用
2023-09-26
编译好的gdal244库(带openjpeg)和单独openjpeg-v2.4.0-windows-x64库
2022-11-11
GDAL库2.4.4版本(内置其他库包括支持OpenCL纠正+geos352+ECW)
2022-11-10
gdal-2.4.4版本源码及geos-3.5.2源码
2022-11-10
ECW动态库(编译好的dll,可附加GDAL编译)
2022-11-10
gdal2.4.4+geos3.5.2+openCL Windows编译后的库
2022-05-06
gdal2.2.0+geos3.5.2+openCL windows编译安装包
2022-05-06
gcp&Pxy.zip
2021-08-23
LinuxOpencv4.0.1-MatchOK.zip
2021-02-26
Linux系统编译源码,opencv4.0.1合集包.zip
2021-02-24
Speckle-reduction-master.zip
2020-04-11
opencv401编译包合集.zip
2020-02-18
opencv&opencv_contrib_build_debug&release.zip
2020-02-13
统一一个压缩包ffmpeg&yasm&cmake&opencv.zip
2020-01-04
OpenCV分解视频-2019-11-29.py
2019-11-29
FWTools(处理地理信息系统数据工具包).rar
2019-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人