halcon双目标定双相机标定

halcon双目标定
在这里插入图片描述

*取消更新
dev_update_off ()
*获取窗体句柄
dev_get_window (WindowHandle)
*设置窗体字体样式
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*设置线条粗细
dev_set_line_width (3)
*创建空对象
gen_empty_obj (ImageL)
*读取指定文件内子集
list_files ('G:/imageL', ['files','follow_links','recursive'], ImageFiles)
*筛选文件类型
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1*读取图像read_image (Image, ImageFiles[Index])*对象追加concat_obj (ImageL, Image, ImageL)endfor
*创建空对象
gen_empty_obj (ImageR)
*读取指定文件内子集
list_files ('G:/imageR', ['files','follow_links','recursive'], ImageFiles)
*筛选文件类型
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1*读取图像read_image (Image, ImageFiles[Index])*对象追加concat_obj (ImageR, Image, ImageR)
endfor
*暂停程序
stop ()
Cameraparm:=['area_scan_division',0.008,0,3.2e-006,3.2e-006,1024,768,2048,1536]
*创建标定模型
create_calib_data ('calibration_object', 2, 1, CalibDataID)
*设置相机的初始内参
set_calib_data_cam_param (CalibDataID, 'all', [], Cameraparm)
*设置标定板的描述文件
set_calib_data_calib_object (CalibDataID, 0, 'G:/other/双相机标定描述文件.descr')
*对象计算
count_obj (ImageR, Number)
*打开一个窗体
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)
*打开一个窗体
dev_open_window (50, 50, 512, 512, 'black', WindowHandle2)
IndexL:=0
IndexR:=0
for I := 1 to Number by 1*选择指定条件的对象select_obj (ImageL, ObjectSelectedL, I)*选择指定条件的对象select_obj (ImageR, ObjectSelectedR, I)*查找标定板find_calib_object (ObjectSelectedL, CalibDataID, 0, 0, I, [], [])*查找标定板find_calib_object (ObjectSelectedR, CalibDataID, 1, 0, I, [], [])*获取标定板mark点轮廓get_calib_data_observ_contours (Contours, CalibDataID, 'marks', 0, 0, I)*获取标定板mark点轮廓get_calib_data_observ_contours (Contours1, CalibDataID, 'marks', 1, 0, I)get_calib_data_observ_pose (CalibDataID, 0, 0, I, ObjInCameraPoseL)get_calib_data_observ_pose (CalibDataID, 1, 0, I, ObjInCameraPoseR)*获取标定板姿态和中心行列坐标get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index2, Pose)*获取标定板姿态和中心行列坐标get_calib_data_observ_points (CalibDataID, 1, 0, I, Row1, Column1, Index3, Pose1)dev_set_window (WindowHandle1)*显示图像dev_display (ObjectSelectedL)*显示图像dev_display (Contours)*在区域中心点画十字叉gen_cross_contour_xld (Cross, Row, Column, 16, 0.785398)*显示图像dev_display (Cross)*显示3d坐标系disp_3d_coord_system (WindowHandle1, Cameraparm, ObjInCameraPoseL, 0.05)dev_set_window (WindowHandle2)*显示图像dev_display (ObjectSelectedR)*显示图像dev_display (Contours1)*在区域中心点画十字叉gen_cross_contour_xld (Cross1, Row1, Column1, 16, 0.785398)*显示图像dev_display (Cross1)*显示3d坐标系disp_3d_coord_system (WindowHandle2, Cameraparm, ObjInCameraPoseR, 0.05)*     stop ()endfor
*暂停程序
stop ()
*反向均方差RMSE
calibrate_cameras (CalibDataID, Error)
*获得camera 内参,calib_obj_pose 外参
get_calib_data (CalibDataID, 'camera', 0, 'params', CameraparmL)
*获得camera 内参,calib_obj_pose 外参
get_calib_data (CalibDataID, 'camera', 1, 'params', CameraparmR)
*获得camera 内参,calib_obj_pose 外参
get_calib_data (CalibDataID, 'camera', 1, 'pose', LHR)
*获得camera 内参,calib_obj_pose 外参
get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', LHO1)
*姿态翻转
pose_invert (LHR, RHL)
*姿态相乘
pose_compose (RHL, LHO1, RH01)
dev_set_window (WindowHandle1)
*读取图像
read_image (Image01, 'G:/imageL/image_01.png')
*显示图像
dev_display (Image01)
dev_set_window (WindowHandle2)
*读取图像
read_image (Image02, 'G:/imageR/image_01.png')
*显示图像
dev_display (Image02)
*转世界坐标
image_points_to_world_plane (CameraparmL,LHO1,819, 597, 'm', X, Y)
*转世界坐标
image_points_to_world_plane (CameraparmR, RH01, 976, 1615, 'm', X1, Y1)
*求两个坐标的直线距离
distance_pp (X, Y, X1, Y1, Distance)
*设置窗体字体样式
set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')
*显示文本
disp_message (WindowHandle2, '边长:'+(Distance*1000)$'4.2f'+'mm', 'image', 0, 0, 'red', 'true')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/100290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现CenterNet图像分割算法模型的转换和量化(SDK0301-转ONNX编译)

一、实现CenterNet图像分割算法模型的转换和量化(SDK0301-转ONNX编译) 1、模型转换 (1)下载CenterNet算法移植代码: $ git clone https://github.com/sophon-ai-algo/examples.git # CenterNet示例项目代码位置 /ex…

Yolov5的tensorRT加速(python)

地址:https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5 下载yolov5代码 方法一:使用torch2trt 安装torch2trt与tensorRT 参考博客:https://blog.csdn.net/dou3516/article/details/124538557 先从github拉取torch2trt源码 ht…

Power BI的发布到web按钮怎么没有?有人知道怎么办吗??????

Power BI的发布到web按钮怎么没有?有人知道怎么办吗????? .

docker启动paddlespeech服务,并使用接口调用

一、检查docker容器是否启动 1.输入命令 systemctl status docker 启动 systemctl start docker 守护进程重启 sudo systemctl daemon-reload 重启docker服务 systemctl restart docker 重启docker服务 sudo service docker restart 关闭docker service docker…

使用 Python 的高效相机流

一、说明 让我们谈谈在Python中使用网络摄像头。我有一个简单的任务,从相机读取帧,并在每一帧上运行神经网络。对于一个特定的网络摄像头,我在设置目标 fps 时遇到了问题(正如我现在所理解的——因为相机可以用 mjpeg 格式运行 30…

指针进阶(1)

指针进阶 朋友们,好久不见,这次追秋给大家带来的是内容丰富精彩的指针知识的拓展内容,喜欢的朋友们三连走一波!!! 字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; 使用方法如…

2023.8.1 Redis 的基本介绍

目录 Redis 的介绍 Redis 用作缓存和存储 session 信息 Redis 用作数据库 消息队列 消息队列是什么? Redis 用作消息队列 Redis 的介绍 特点: 内存中存储数据:奠定了 Redis 进行访问和存储时的快可编程性:支持使用 Lua 编写脚…

数据分析综述

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

bit、bin 、mcs文件区别

FPGA里面的可执行文件都涉及到 *.bit, *.mcs, *.bin 和 *.elf。 bit文件 bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。 bin文件 bin 文件是二进制文件,按顺序只包含原始字节流&#xff0c…

位运算 |(按位或) (按位与) ^(按位异或)

目录 文章目录:本章讲解的主要是刷题系列 1:首先会介绍 I & ^这三个操作符的作用,性质 2:三道使用位运算操作符的经典 笔试题(来自剑指offer) 题目链接如下: 1:136. 只出现一次的数字 - 力扣(LeetCode…

Python实现猎人猎物优化算法(HPO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

肖sir__设计测试用例方法之等价类02_(黑盒测试)

设计测试用例方法之等价类02_(黑盒测试) 一、掌握常用的设计方法: 黑盒测试方法:等价类、边界值,状态迁移法、场景法、判定表、因果图、正交表,(7种) 经验测试方法:错误推测法、异常…