- 博客(61)
- 资源 (2)
- 收藏
- 关注
原创 linux gdb-multiarch
gdb-multiarch是支持多架构调试的GDB版本,可用于交叉调试不同CPU架构(如ARM、AArch64、MIPS等)的程序。它适用于在x86主机上调试ARM开发板程序、分析CTF二进制文件或QEMU模拟环境。使用命令gdb-multiarch ./your_program启动调试,可通过show architecture查看目标架构,必要时用set architecture手动指定。还支持远程调试,在设备端运行gdbserver后,客户端通过target remote连接进行调试。
2025-11-20 09:33:41
315
原创 linux readelf 指令
readelf是Linux平台下分析ELF二进制文件的实用工具,属于GNUBinutils套件。该工具提供多种选项查看文件结构:-h显示文件头(类型/架构/入口地址),-l列出程序头表,-S查看节区信息,-s展示符号表,-d显示动态链接信息(如依赖库)。典型应用包括分析可执行文件、共享库和目标文件的结构信息,但仅支持读取不修改文件内容。通过组合这些选项,开发者可以全面了解ELF文件的装载段、符号引用和重定位条目等关键数据。
2025-11-20 09:24:16
194
原创 linux patchelf工具 用法
摘要:patchelf是一款用于修改ELF格式二进制文件的Linux工具,无需重新编译源代码即可调整动态链接信息。主要功能包括修改解释器路径、设置动态库搜索路径(RPATH/RUNPATH)、替换/删除共享库依赖等。典型应用场景包括构建便携式应用、解决glibc兼容性问题、Docker镜像优化等。使用时需注意仅适用于动态链接程序,且修改后可能影响安全性功能。该工具为命令行程序,不同于开发库libelf,适合在构建部署流程中使用。
2025-11-20 09:12:18
565
原创 CMakeList 中 PUBLIC 和 PRIVATE的区别
CMake中target_include_directories的PUBLIC和PRIVATE关键字用于控制头文件路径的可见性: PUBLIC:当前目标及其所有依赖目标都可访问该路径,适用于公开接口头文件(如库的.h文件)。 PRIVATE:仅当前目标可访问,依赖目标无法继承,适用于内部私有头文件。 示例:公开头文件放在include/用PUBLIC声明,私有头文件放在src/用PRIVATE声明。这样依赖该库的可执行文件会自动获得公开头文件路径,但不会暴露私有实现。
2025-11-10 15:59:30
440
原创 CMake 构建库行为 与 C++ 编译器库 符号导出机制 区别
摘要:add_library(SHARED)和__declspec(dllexport)在Windows动态库开发中需配合使用。前者在CMake层面指定生成DLL/so/dylib,但不自动导出任何C++符号;后者是MSVC编译器指令,显式标记需要导出的类和函数。建议使用条件编译宏提高跨平台性,Windows需定义MYLIB_EXPORTS宏实现导出/导入切换,而Linux/macOS默认导出符号。两者协同工作:add_library决定是否生成DLL,dllexport控制DLL的对外接口。
2025-11-10 10:26:05
540
原创 vscode arm交叉编译 中 cmakeTools 编译器设置 和 交叉调试arm Linux程序
本文介绍了在VSCode中进行ARM交叉编译和调试的完整流程。首先需要安装VSCode和CMakeTools、Clangd插件,以及aarch64-linux-gnu交叉编译工具链。然后通过CMake快速入门创建项目,选择ARM编译器进行配置。调试部分需安装gdb-multiarch,并配置launch.json文件,设置可执行文件路径、调试器路径和目标设备IP地址。最后提供了Ubuntu镜像源更新方法以安装ARM版本库。该指南详细说明了从编译到调试的完整ARM开发环境搭建过程。
2025-11-04 14:02:38
433
原创 vscode clangd 插件第三方库头文件不识别
clangd 依赖文件来获取项目的编译命令和头文件路径。bearbear makebear生成后,,或者你在 VSCode 的 clangd 设置中手动指定其绝对路径3。
2025-11-04 11:31:28
303
原创 linux 编译程序 so库为什么要建立软链接
简单说,软链接就是 “库的别名”,一边对接编译 / 运行时的 “通用查找规则”,一边关联实际的库文件,既简化操作又保证版本可控。编译程序时,你只需要写 -lopencv_videoio(链接 OpenCV 的视频 IO 库),链接器会自动去找。一个库可能有多个版本(比如 OpenCV 4.2、4.3),通过软链接可以快速切换默认版本,无需修改代码或编译配置。),一旦库版本更新(比如升到 4.3.0),所有编译命令都要跟着改,非常麻烦。如果没有这个软链接,你得手动指定完整的版本名(比如 -
2025-11-04 09:49:22
347
原创 vb虚拟机网络模式与sshd服务 关系
windows通过ssh 虚拟机 可以进行文件传输。虚拟机网络模式:虚拟机的网络模式决定了虚拟机如何与宿主机(Host)以及外部网络(如互联网)进行通信。不同的模式适用于不同的使用场景。
2025-11-03 14:02:26
683
原创 linux vscode+cmake+clangd
摘要:本文介绍在Linux系统下配置VSCode+Cmake+Clangd开发环境的方法。重点解决Clangd Server安装失败问题,需通过命令行使用apt安装:执行sudo apt update && sudo apt install clangd。安装后需检查版本(clangd --version)、确认安装路径(which clangd),并在VSCode插件设置中正确关联Clangd路径,最后重启VSCode完成配置。该方案可有效解决网络原因导致的Clangd Server安装失
2025-11-03 09:45:45
304
原创 关于QT 打印中文 乱码问题
文章摘要: Qt程序输出中文乱码问题是由于控制台GBK编码与程序UTF-8编码不匹配导致的。解决方案:1)确保源文件保存为UTF-8 without BOM格式;2)在main()函数中添加Windows系统指令system("chcp 65001 > nul")切换控制台为UTF-8编码。通过这两个步骤即可正确显示中文字符,示例代码已给出具体实现方法。
2025-10-09 11:26:53
283
原创 通过ssh远程linux 盒子
本文介绍了如何修改SSH配置文件以监听所有IP地址。操作步骤包括:1)使用vim编辑/etc/ssh/sshd_config文件;2)将ListenAddress参数设置为0.0.0.0;3)重启sshd服务。修改后即可通过网线连接,但需注意IP地址要匹配。该配置允许SSH服务监听所有可用网络接口的连接请求。
2025-09-22 09:48:09
227
转载 手眼标定【原理解析】
手眼标定旨在确定相机与机械手之间的坐标转换关系,主要分为两种类型:眼在手外(相机固定,标定板在机械手末端)和眼在手上(相机安装在机械手上,标定板固定)。眼在手外需标定相机到机械手坐标系的转换,而眼在手上则需标定相机到机械臂末端执行器的转换关系。两种方法均通过求解特定方程组实现标定,示意图展示了标定原理和求解过程。转载自知乎相关文章。
2025-09-16 10:21:54
112
原创 Qt 关于QImage保存JPG格式失败的解决方案
摘要 该文档总结了图像处理中的常见问题及解决方案,主要包括三类问题:1) 路径与权限问题,如路径不存在、中文路径兼容性和写入权限;2) 格式支持问题,如缺少JPEG插件、动态库加载和环境变量配置;3) 图像处理问题,包括格式匹配、后缀名误导和图像数据有效性检查。解决方案涉及路径验证、插件部署、格式兼容性检查和图像数据有效性确认等操作。
2025-09-12 09:10:51
355
原创 halcon模板匹配-建立模板技巧
原因分析:halcon模板匹配是通过提取边缘点进行匹配的,但是用模糊图像建立模板,去匹配清晰图像是可以兼容的。通常建立模板选用的图片标准是清晰度、对比度高。但是,建立的模板匹配无法兼容模糊的图像。这样边缘过渡少,建立模板受到干扰低。,所以在匹配的时候可以兼容清晰图像。
2025-07-13 17:59:44
281
转载 QT中QWaitCondition 线程同步【注意事项】
函数doLongTimeWork(),里面构造了一个局部的QMutexLocker对象并锁住互斥量,当QMutexLocker被销毁的时候,互斥量将被自动解锁(因为QMutexLocker是个局部变量,当函数返回时它就被销毁),当执行函数doLongTimeWork()时,如果线程未运行,则调用start()开启线程,如果线程已经在运行了,则调用condition.wakeOne()唤醒线程。QMutex::lock相当于临界区锁,让处于锁中的资源不能被别的线程访问,即自己霸着不让别人用。
2025-04-02 19:08:37
124
原创 彩色图像Opencv转Qimage【避坑】
如果 BGR -》 RGB 通道转换 使用cvMat进行,然后再转换成Qimage,则界面显示很顺畅!这种方式效率很慢(界面巨卡)。怀疑Qimage内部没有针对图像处理进行优化(加速)工业相机取流后,用cvMat保存,然后转Qimage在主界面中显示。pixdat.constData():相机流的内存地址。
2025-03-14 11:26:19
359
原创 yolov5 官方部署代码 改动出现问题
将输入张量的维度设定为 Dims4{ -1, 3, -1, -1 },其中 -1 表示该维度是动态的,这样就和优化配置文件中的动态维度设定相匹配了。当进行动态部署的时候,需要让输入张量的维度定义与动态输入维度的优化配置文件相匹配,也就是不设定静态维度,仅依靠优化配置文件来定义输入维度。2.动态维度设置问题:由于使用了动态维度,在某些情况下,TensorRT 可能无法正确推断出输入张量的维度,从而导致维度数量为 0。改动:动态dynamic:动态batchSize、图像输入尺寸大小。
2025-02-12 11:20:20
292
原创 【halcon案例】inspect_bga.hdev测量bga焊点缺陷
通过距离、各项异性(‘anisometry)、灰度值,筛选出NG的焊点区域。将模板映射到每次来料焊点,计算相邻两焊点之间的距离。提取OK焊点,建立模板。
2025-01-11 14:12:38
300
原创 HIK 相机 设置缓存节点进行取流
场景:【硬触发】环境触发频率快时,相机内缓存图片(默认节点数量为1)有可能被不停刷新,导致无法及时捕捉到每次触发响应的图片。方案:SDK中可以设置相机内部缓冲节点数量和取图策略。nImageNodeNum:节点数量(初始化为1)handle(相机句柄)
2024-12-13 11:34:55
1147
原创 【Qtimer】QTimer使用时易错之处
Qtimer对象 生命周期会影响 Qtimer计时,即当Qtimer对象在构造函数结束后,生命周期结束,那么就不会触发延迟计时功能。在构造函数中,使用Qtimer 绑定槽函数 使每隔1s 触发槽函数时。解决办法:让Qtimer对象变成类成员,确保生命周期一直到界面关闭。
2024-06-24 10:35:46
321
原创 gitLab 短信验证没有中国地区【最新解决方法】
发送验证码按钮为灰色的话,就切换信用卡验证,再切换成短息验证码就可以了。#网上众多的方案是修改dom,而且时间大约是21年以前。
2024-02-02 11:51:07
2410
7
原创 PCL1.11.0+VTK8.2.0+QT5.12.2 中 QT pro文件配置
注意:qt编译时,只有Release下正常,原因可能是 QVTKWidget 控件只支持Release版本。自行替换路径和 pcl 、vtk版本即可。
2022-09-08 21:39:56
936
原创 远程电脑时,远程桌面 黑屏,且鼠标旁边的加载圆圈卡住
解决办法保证你的电脑和被远程电脑 网络设置中 巨型帧(Jumbo Frame) 设置一样 即可。
2022-04-19 20:39:20
1593
原创 关于 c++ opencv [ INFO:0] global c:\build\master_winpack-build-win64-vc15\***
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录遇到问题一、报错内容二、报错位置代码 “cv::waiteKey(0)” 产生报错解决办法参考链接遇到问题先使用opencv4封装dll ,然后使用opencv4代码调用,运行成功。然后使用 opencv3 封装dll ,然后使用opencv3代码 动态调用dll。调试时发现 无法进入代码中。注意:代码没有做任何更改!!!一、报错内容直接点击“开始执行不调试” 时,出现报错原因:使用 opencv4 调试时候,虽.
2022-04-11 15:42:05
9755
原创 Qt配置OpenCV教程 补充
参考:Qt配置OpenCV教程opencv 版本:4.5.4QT 版本:Qt5.12.12在 mingw32-make install 操纵时,会提示 需要管理员权限。但是给了权限后,发现install文件装在了C:\Program Files (x86) 中。这是 只需要把相应的include 和 x64 文件夹复制到自己想要的目录下 进行下一步操作(在C:\Program Files (x86)中 操作的话。在 qt文件的 pro中配置路径 不行。不知道啥原因?。)...
2022-01-07 13:32:53
1846
转载 win10下利用cmake和vs重新编译opencv源码 使用基于Qt的GUI模块,显示图像
主要教程来自于此博主这里进行几点补充。按照上述文章配置完成后,运行vs 出现“Qt5Test.dll" 等一些Qt5 相关dll错误。大概意思是找不到dll。解决方法如下:(保证安装Qt时选择的是“msvc”,而不是”mingw“,两者编译器不同。在目录“D:\Qt5.12\5.12.12\msvc2017_64\bin” 下将缺失的dll文件 复制到对应的opencv安装目录“opencv\build\x64\vc15\bin” 下。...
2021-12-17 14:16:04
211
翻译 VIsual Studio编译OpenCV 无法打开python36_d.lib的问题
主要参考以下文章:VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题VIsual Studio编译OpenCV opencv_contrib:无法打开python36_d.lib的问题python36_d.lib 的问题,同上,在 Anaconda3 的 pyconfig.h 文件中做出修改。将:改为:并且注销:然后再编译就可以通过了!其中 编译后的OpenCV项目中的pyconfig.h文件打开opencv_pyth
2021-11-21 13:04:52
1271
3
原创 关于散点合拢的案例
需求:一推排列规律的散点图,将其尽可能的合拢思路1.散点按照一定规律排列,故先矫正倾斜角度,在聚合点思路2.直接对个点坐标进行统一缩小执行过程发现思路1,在剔除空袭后再对放置各点,但是点于点之间的斜率关系被破坏,使得各点位置信息损失。而思路2在这方面表现较好。代码如下:struct mc_and_pix{ vector<Point2f> mc; vector<vector<int>> pix_all;};//垂直方向投影void Vert
2021-09-23 13:47:21
308
原创 Opencv 图像数据 类型 和所占内存
CV_8U - 8-bit unsigned integers ( 0..255 )CV_8S - 8-bit signed integers ( -128..127 )CV_16U - 16-bit unsigned integers ( 0..65535 )CV_16S - 16-bit signed integers ( -32768..32767 )CV_32S - 32-bit signed integers ( -2147483648..2147483647 )CV_32F - 32-
2021-09-15 18:10:52
953
原创 C语言的结构体可以实现类的基本功能
核心思想:在结构体中加入方法指针。#include <stdio.h>#include <string.h> struct Student; typedef struct StudentVtbl{ char* (*GetName)(struct Student* This); void(*SetName)(struct Student* This, char*);}StudentVtbl; typedef struct Student{
2021-08-11 10:27:51
795
原创 VS 2015 专用卸载工具
使用流程(Win10系统下):1.找到这个txt文档同路径下的bin\Debug\Setup.ForcedUninstall.exe文件,复制整个路径(直接运行无效)2.打开命令提示符(管理员),将这个路径复制进去,比如:C:\Users\xxxx\Desktop\VisualStudioUninstaller-1.4\bin\Debug\Setup.ForcedUninstall.exe这里我将整个文件夹放到桌面上了,中间的xxxx是系统账户名,这个因各自电脑而异3.回车键执行,同时打开任务管理
2021-01-31 12:01:24
974
原创 基于边缘改进的全局阈值 opencv
算法步骤:注意点:1.2步骤中采用百分比阈值 ,阈值的百分数应设置较大值(如99.7%),可以排除背景中的干扰点99.97%时候的二值图(为了可视化,灰度值范围设置为0-255)90%的二值图2.最后一步中,通过otsu计算阈值时候,灰度值为0的像素点不计入计算。核心算法:void edge_threshold(Mat &src){ Mat src1 = src.clone(); Mat dst, thre, dst_x, dst_y; medi.
2020-10-21 13:59:17
1981
2
原创 快速将 多个CSV文件 合成 一个
1.将需要合并的csv文件夹全部放在D盘。2.打开cmd命令提示符(同时按win+R键),输入cmd,按下确定键。3.输入D:,按下ENTER键,切换到D盘符下。然后输入合并指令(注意英文输入法输入):copy *.CSV all.csv (这个符号是表示合并D盘下第一路径中的所有CSV格式合并为一个,并命名为all.csv)。几秒钟就完成操作了。...
2020-08-14 16:22:02
2889
1
原创 python excel表操作(两个excel合并为)
source_dir = ['../digitTest.csv','../digitTrain.csv']target_dir = '../trainLabel.xlsx'c_dir = ['../digitTest.xlsx','../digitTrain.xlsx']#转化文件格式 csv-excelfor i in source_dir: r_csv = pd.read_csv(i,encoding='utf-8')for j in c_dir: r_csv.to_e.
2020-08-13 10:48:36
423
原创 编程 小毛病
遍历像素 时候 喜欢下面 指针形式float *x_data = (float*)xDerivae.data;float *y_data = (float*)yDerivae.data;代码没毛病 但是!!!!在遍历像素的时候dx = x_data[j*xDerivae.step / sizeof(float) + i];dy = y_data[j*xDerivae.step / sizeof(float) + i];容易混淆 ().step括号中的变量。必须和后面sizeo
2020-08-11 16:23:06
177
tensorRT推理(C++和python代码)
2025-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅