"Functional-style cast from id to double is not allowed" 在 iOS 上使用 aruco 构建 opencv 时

"Functional-style cast from id to double is not allowed" when building opencv with aruco on iOS

我正在尝试制作一个可以检测 Aruco 标记的 iOS 应用程序。因此,我为 iOS 下载了 opencv2.framework,但我意识到其中不包括 Aruco。按照这个page,我手动编译添加opencv_contrib(https://github.com/opencv/opencv_contrib.git)模块文件夹到opencv模块文件夹中。此过程运行良好,在 Xcode 中我可以访问 Aruco 功能。但我也遇到了这个奇怪的错误: functional-style cast xcode error

我试过调试,运行时 v 作为双精度变量传递。显式转换 (double)v 也无效。我该如何解决这个问题?

我发现了问题。这是另一段调用运算符的代码,没有显式转换参数。它是:

NSArray *camMatrix = ...
...
Mat cameraMatrix = (Mat_<double>(3,3) << camMatrix[0], camMatrix[1], camMatrix[2],
                camMatrix[3], camMatrix[4], camMatrix[5],
                camMatrix[6], camMatrix[7], camMatrix[8] );

像这样投射 [camMatrix[0] doubleValue]:

NSArray *camMatrix = ...
...
Mat cameraMatrix = (Mat_<double>(3,3) << [camMatrix[0] doubleValue], [camMatrix[1] doubleValue], [camMatrix[2] doubleValue],
                [camMatrix[3] doubleValue], [camMatrix[4] doubleValue], [camMatrix[5] doubleValue],
                [camMatrix[6] doubleValue], [camMatrix[7] doubleValue], [camMatrix[8] doubleValue] );