- 博客(76)
- 资源 (2)
- 收藏
- 关注
原创 HIK相机SDK调用顺序导致采图异常
海康线扫相机采图异常问题排查总结 问题现象:调用海康SDK采图时出现图像异常,设置网口巨型帧后硬件采图正常,但软件显示仍异常。 根本原因:SDK调用时序错误。在OpenDevice之前就调用了GetOptimalPacketSize和GevSCPSPacketSize函数,导致参数配置未生效。 解决方法:调整SDK函数调用顺序,确保在打开设备后再进行参数配置。
2026-06-17 16:08:06
285
原创 点云统计滤波(基于中值距离)
本文介绍了一种基于统计滤波的点云离群点去除方法,通过KD-Tree加速邻域搜索,计算每个点的局部距离中位数,并基于全局中位数设定阈值筛选离群点。方法包含三个关键参数:搜索半径(0.05-1.0米)、最小邻居数(10-200)和阈值倍率(0.3-2.0)。通过多线程优化,构建多个KD-Tree实例并行处理,显著提升计算效率。实验结果显示,该方法能有效去除噪声点,同时保留主要结构特征,并通过左右对比可视化直观展示滤波效果。
2026-05-14 16:58:20
40
原创 Foundationpose环境配置【非conda--纯UV】(linux22.04+python3.10)
本文介绍了在禁用conda环境下复现FoundationPose的具体流程。主要步骤包括:1)安装gcc-10/g++-10编译器和CUDA11.8工具包;2)使用uv工具创建Python3.9虚拟环境并安装依赖;3)手动安装Kaolin和PyTorch3D的whl包;4)配置NVDiffRast编译环境,特别注意setuptools版本需为69.0.0;5)修改项目编译脚本并完成构建。整个过程涉及多个依赖项的版本控制,包括编译器、CUDA、Python包等,需要严格遵循指定版本要求以确保成功编译和运行。
2026-04-30 16:04:14
344
原创 关于halcon窗口画roi(线),发生偏移问题
摘要:使用Halcon绘制工具时发现图像放大后绘制位置存在1像素内偏差。经排查,原因是SetPart算子即使接收小数参数也会自动取整。解决方法是在调用SetPart前手动对参数进行强制取整,确保坐标精度准确。该问题在图像放大操作时尤为明显,通过主动控制参数类型可消除绘制偏差。
2026-03-24 13:38:00
36
原创 windows下VSCode配置C++/CMake/Qt/MVSC 开发环境 【电脑已经安装vs2022】
CMakeTool 中cmake Path选择qt安装路径下的Tool文件中。按照该文章配置msvc编译器即可。
2026-03-17 15:04:51
104
原创 CGAL点云的表面重建 流程概述
摘要:本文展示了一个标准化的3D点云处理流程,包含5个阶段:1)输入多种点云格式(XYZ/OFF/PLY/LAS);2)预处理(去噪/简化/平滑/法向估计);3)表面重建(推进前沿/尺度空间/泊松三种算法);4)后处理(补洞/网格优化);5)输出三角网格模型(OFF/PLY等格式)。该模块化流程支持灵活配置,适用于Kinect扫描、LiDAR数据处理等多种场景,是工业级点云处理的标准工作流模板。
2026-02-13 11:51:15
716
原创 XYZ、OFF、PLY、LAS/LAZ点云格式区别
摘要:本文对比分析了四种主流点云文件格式的核心特性。XYZ格式最为简单,仅存储坐标但缺乏元数据支持;OFF格式主要用于网格存储,点云支持较弱;PLY格式灵活通用,支持颜色、法向等属性,广泛应用于3D重建;LAS/LAZ为专业激光雷达格式,包含强度、分类码等传感器数据,是测绘行业标准。选择建议:简单交换用XYZ,3D扫描数据用PLY,激光雷达数据用LAS/LAZ。HALCON用户需注意其不支持直接读取LAS/LAZ格式。格式转换可使用CloudCompare、LASTools等工具。(150字)
2026-02-13 11:39:07
754
原创 pick_and_place_with_2d_matching_moving_cam.hdev *眼在手上 2D匹配,3D抓取【案例解析】
这段代码解析了两个关键函数,用于机器人抓取任务中的位姿准备和3D定位: prepare_poses_and_rectification_data_moving_cam函数核心功能: 构建与图像对齐的匹配平面,考虑物体高度 自动确定校正尺度(自适应分辨率) 预生成RectificationMap提高效率 确保平面法向量朝向合理(避免背面) 保持机器人原有位姿格式兼容性 obtain_3d_pose_of_match_moving_cam函数核心功能: 将2D形状匹配结果转换为3D位姿 处理有无图像校正两种场景
2026-01-22 16:08:36
917
原创 image_to_world_plane 如何计算校正图像(rectified image)的尺寸、比例(Scale)、位姿(Pose)
摘要:本文介绍了两种基于HDevelop的图像校正方法。第一种方法通过计算图像中心点的像素尺度(Scale),确保校正图像局部尺度与原始图像一致,并将指定点置于图像中心。第二种方法将原始图像边界映射到世界坐标系,计算最小外接矩形,保证整幅图像内容完整显示在校正图像中。两种方法分别封装为parameters_image_to_world_plane_centered和parameters_image_to_world_plane_entire过程,适用于不同应用场景。最终通过gen_image_to_worl
2026-01-21 10:39:54
250
原创 算子 image_to_world_plane
摘要:image_to_world_plane算子通过将图像投影到世界坐标系z=0平面实现图像校正,消除镜头和透视畸变。校正后图像尺寸由Width/Height参数指定,像素物理尺寸通过Scale参数设置(如'mm'表示1像素=1mm)。对于多图像处理,建议先使用gen_image_to_world_plane_map生成映射再应用map_image以提高效率。Scale值应与原始图像像素尺寸相近以避免混叠或过度平滑,其计算公式为:校正图像像素尺寸/标定靶标世界坐标单位(如靶标以米为单位时,'μm'表示1像
2026-01-21 10:33:03
720
原创 hom_mat3d_translate_local 和 hom_mat3d_translate 区别
HALCON中hom_mat3d_translate与hom_mat3d_translate_local的核心区别在于坐标系选择。前者在固定世界坐标系下平移(绝对方向),后者在当前物体局部坐标系下平移(相对方向)。例如,对旋转90度的夹爪,普通平移沿世界X轴移动,而_local版本则沿夹爪自身X轴移动。全局平移适用于固定方向定位,局部平移则适合工具微调、相对路径规划等场景。记忆要点:普通平移是"地图移动",_local是"自身移动"。
2026-01-20 17:20:31
372
原创 halcon 相机内/外参标定
摘要:相机内参决定你“能看到什么”, 外参决定你“看到的东西在哪里”。内参是相机的先天特性,外参是整个机械系统的后天状态
2026-01-20 11:06:21
892
原创 【two_camera_calibration.hdev】案例解析
摘要:本文介绍了基于相机标定的高精度图像拼接技术。通过内参和外参标定(Pose),将斜视图像校正为正射视图(Rectification),消除透视畸变。关键步骤包括:1)世界坐标对齐,通过齐次变换矩阵统一坐标系;2)无缝拼接控制,精确匹配第二幅图的校正原点与第一幅图右边界;3)高度补偿(DiffHeight)修正标定平面与物体平面的高度差。该方法采用预计算校正映射(Map)方案,实现高效处理。实验展示了双相机系统的拼接效果,验证了0.1mm/pixel精度的可行性,处理时间在毫秒级。
2026-01-20 10:36:26
347
原创 WSL + ubantu22.04 + 远程桌面闪退+黑屏闪退解决
WSL(Windows Subsystem for Linux)是微软开发的在Windows中运行Linux的技术。安装步骤包括:1)启用WSL功能;2)下载并配置Ubuntu 20.04;3)创建用户并设置权限;4)配置虚拟桌面(xfce4+xrdp)解决闪退问题;5)安装中文支持。关键配置涉及用户管理、远程桌面服务和语言包安装,实现Windows与Linux的无缝集成。
2025-12-31 13:44:28
1300
原创 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
535
原创 linux readelf 指令
readelf是Linux平台下分析ELF二进制文件的实用工具,属于GNUBinutils套件。该工具提供多种选项查看文件结构:-h显示文件头(类型/架构/入口地址),-l列出程序头表,-S查看节区信息,-s展示符号表,-d显示动态链接信息(如依赖库)。典型应用包括分析可执行文件、共享库和目标文件的结构信息,但仅支持读取不修改文件内容。通过组合这些选项,开发者可以全面了解ELF文件的装载段、符号引用和重定位条目等关键数据。
2025-11-20 09:24:16
288
原创 linux patchelf工具 用法
摘要:patchelf是一款用于修改ELF格式二进制文件的Linux工具,无需重新编译源代码即可调整动态链接信息。主要功能包括修改解释器路径、设置动态库搜索路径(RPATH/RUNPATH)、替换/删除共享库依赖等。典型应用场景包括构建便携式应用、解决glibc兼容性问题、Docker镜像优化等。使用时需注意仅适用于动态链接程序,且修改后可能影响安全性功能。该工具为命令行程序,不同于开发库libelf,适合在构建部署流程中使用。
2025-11-20 09:12:18
859
原创 CMakeList 中 PUBLIC 和 PRIVATE的区别
CMake中target_include_directories的PUBLIC和PRIVATE关键字用于控制头文件路径的可见性: PUBLIC:当前目标及其所有依赖目标都可访问该路径,适用于公开接口头文件(如库的.h文件)。 PRIVATE:仅当前目标可访问,依赖目标无法继承,适用于内部私有头文件。 示例:公开头文件放在include/用PUBLIC声明,私有头文件放在src/用PRIVATE声明。这样依赖该库的可执行文件会自动获得公开头文件路径,但不会暴露私有实现。
2025-11-10 15:59:30
502
原创 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
578
原创 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
637
原创 vscode clangd 插件第三方库头文件不识别
clangd 依赖文件来获取项目的编译命令和头文件路径。bearbear makebear生成后,,或者你在 VSCode 的 clangd 设置中手动指定其绝对路径3。
2025-11-04 11:31:28
491
原创 linux 编译程序 so库为什么要建立软链接
简单说,软链接就是 “库的别名”,一边对接编译 / 运行时的 “通用查找规则”,一边关联实际的库文件,既简化操作又保证版本可控。编译程序时,你只需要写 -lopencv_videoio(链接 OpenCV 的视频 IO 库),链接器会自动去找。一个库可能有多个版本(比如 OpenCV 4.2、4.3),通过软链接可以快速切换默认版本,无需修改代码或编译配置。),一旦库版本更新(比如升到 4.3.0),所有编译命令都要跟着改,非常麻烦。如果没有这个软链接,你得手动指定完整的版本名(比如 -
2025-11-04 09:49:22
401
原创 vb虚拟机网络模式与sshd服务 关系
windows通过ssh 虚拟机 可以进行文件传输。虚拟机网络模式:虚拟机的网络模式决定了虚拟机如何与宿主机(Host)以及外部网络(如互联网)进行通信。不同的模式适用于不同的使用场景。
2025-11-03 14:02:26
724
原创 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
387
原创 关于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
423
原创 通过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
255
转载 手眼标定【原理解析】
手眼标定用于确定相机与机械手之间的坐标转换关系,主要分为两种模式:眼在手上和眼在手外。眼在手上模式中,相机安装在机械臂上,通过标定板位置求解相机与末端执行器的转换关系;眼在手外模式则固定相机位置,求解标定板与机械手的变换关系。两种方法均需建立坐标系转换方程,利用已知的标定板位姿和机械手位姿进行求解,最终实现视觉系统与机械臂的精准协同。
2025-09-16 10:21:54
216
原创 Qt 关于QImage保存JPG格式失败的解决方案
摘要 该文档总结了图像处理中的常见问题及解决方案,主要包括三类问题:1) 路径与权限问题,如路径不存在、中文路径兼容性和写入权限;2) 格式支持问题,如缺少JPEG插件、动态库加载和环境变量配置;3) 图像处理问题,包括格式匹配、后缀名误导和图像数据有效性检查。解决方案涉及路径验证、插件部署、格式兼容性检查和图像数据有效性确认等操作。
2025-09-12 09:10:51
426
原创 halcon模板匹配-建立模板技巧
原因分析:halcon模板匹配是通过提取边缘点进行匹配的,但是用模糊图像建立模板,去匹配清晰图像是可以兼容的。通常建立模板选用的图片标准是清晰度、对比度高。但是,建立的模板匹配无法兼容模糊的图像。这样边缘过渡少,建立模板受到干扰低。,所以在匹配的时候可以兼容清晰图像。
2025-07-13 17:59:44
320
转载 QT中QWaitCondition 线程同步【注意事项】
函数doLongTimeWork(),里面构造了一个局部的QMutexLocker对象并锁住互斥量,当QMutexLocker被销毁的时候,互斥量将被自动解锁(因为QMutexLocker是个局部变量,当函数返回时它就被销毁),当执行函数doLongTimeWork()时,如果线程未运行,则调用start()开启线程,如果线程已经在运行了,则调用condition.wakeOne()唤醒线程。QMutex::lock相当于临界区锁,让处于锁中的资源不能被别的线程访问,即自己霸着不让别人用。
2025-04-02 19:08:37
161
原创 彩色图像Opencv转Qimage【避坑】
如果 BGR -》 RGB 通道转换 使用cvMat进行,然后再转换成Qimage,则界面显示很顺畅!这种方式效率很慢(界面巨卡)。怀疑Qimage内部没有针对图像处理进行优化(加速)工业相机取流后,用cvMat保存,然后转Qimage在主界面中显示。pixdat.constData():相机流的内存地址。
2025-03-14 11:26:19
411
原创 yolov5 官方部署代码 改动出现问题
将输入张量的维度设定为 Dims4{ -1, 3, -1, -1 },其中 -1 表示该维度是动态的,这样就和优化配置文件中的动态维度设定相匹配了。当进行动态部署的时候,需要让输入张量的维度定义与动态输入维度的优化配置文件相匹配,也就是不设定静态维度,仅依靠优化配置文件来定义输入维度。2.动态维度设置问题:由于使用了动态维度,在某些情况下,TensorRT 可能无法正确推断出输入张量的维度,从而导致维度数量为 0。改动:动态dynamic:动态batchSize、图像输入尺寸大小。
2025-02-12 11:20:20
320
原创 【halcon案例】inspect_bga.hdev测量bga焊点缺陷
通过距离、各项异性(‘anisometry)、灰度值,筛选出NG的焊点区域。将模板映射到每次来料焊点,计算相邻两焊点之间的距离。提取OK焊点,建立模板。
2025-01-11 14:12:38
354
原创 HIK 相机 设置缓存节点进行取流
场景:【硬触发】环境触发频率快时,相机内缓存图片(默认节点数量为1)有可能被不停刷新,导致无法及时捕捉到每次触发响应的图片。方案:SDK中可以设置相机内部缓冲节点数量和取图策略。nImageNodeNum:节点数量(初始化为1)handle(相机句柄)
2024-12-13 11:34:55
1317
原创 【Qtimer】QTimer使用时易错之处
Qtimer对象 生命周期会影响 Qtimer计时,即当Qtimer对象在构造函数结束后,生命周期结束,那么就不会触发延迟计时功能。在构造函数中,使用Qtimer 绑定槽函数 使每隔1s 触发槽函数时。解决办法:让Qtimer对象变成类成员,确保生命周期一直到界面关闭。
2024-06-24 10:35:46
336
原创 gitLab 短信验证没有中国地区【最新解决方法】
发送验证码按钮为灰色的话,就切换信用卡验证,再切换成短息验证码就可以了。#网上众多的方案是修改dom,而且时间大约是21年以前。
2024-02-02 11:51:07
2578
7
foundationPose 个人构建数据集(model+depth+rgb)
2026-04-08
tensorRT推理(C++和python代码)
2025-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅