由于opencv开源的性质,所以一些细节做的不好,在标定细节上面不够完善,因此Halcon标定的结果明显优于opencv等开源标定包。
这里存在一个问题,就是如何把Halcon标定的结果输入到opencv中或者大部分开源体系的相机包。
这里给出我的经验,有些也是蒙的,因为详细了解要推导矫正公式。
先上一张halcon标定结果图

来一张opencv的内参图
其中焦距
opencv_fx = halcon_f / sx *1000
opencv_fy = halcon_f / sy *1000
举例 :
1866.53 = 4.10644 / 2.2 * 1000.0
其中畸变参数
opencv_k1 = halcon_kappa * halcon_f * halcon_f / 1000000;
举例:
-0.23265… = -13796.8 * 4.10644 *4.10644 / 1000000;
真的百度不到,bing了一下有了一个结果,讨论十分激烈有时间细看,halcon官方声明不可转换,但是有人测试发现可以这么用,良心篇,参考如下:

本文探讨了Halcon相机标定相对于opencv的优势,并分享了如何将Halcon标定的相机内参和外参转换并应用于opencv的过程。通过公式转换,如焦距opencv_fx = halcon_f / sx *1000,畸变参数opencv_k1 = halcon_kappa * halcon_f * halcon_f / 1000000,实现了两者之间的兼容。同时提到了一个Stack Overflow的讨论链接,为无法直接转换的问题提供了一个可能的解决方案。
订阅专栏 解锁全文






