为什么 OpenCV 构造函数在 iPhone5 而不是 iPhone6/iPad 中工作?

Why does OpenCV constructor work in iPhone5 and not iPhone6/iPad?

我有以下代码:

CGFloat data[6] = {0.0f,1.0f,2.0f,3.0f,4.0f,5.0f};
cv::Mat warp_mat( 6,1, CV_32FC1,data);

for (int i=0;i<6;++i)
     printf("%f, ",warp_mat.at<float>(i));

当我在 iPhone5 和 iPhone5 模拟器上 运行 时,这段代码工作正常。 但是,当我在 iPhone6/iPad 及其模拟器上 运行 它时,它会打印出乱码。 谁能告诉我为什么?

我用这段代码修复了它:

cv::Mat warp_mat( 6,1, CV_32FC1);
    for (int j=0;j<6;++j)
        warp_mat.at<float>(j)=data[j];

但我担心还有其他类似的问题。任何 advice\comments\ideas 将不胜感激。

因为在 64 位系统上 sizeof(CGFloat) 不等于 sizeof(float)

CGFloat data[6] = {0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f};
cv::Mat warp_mat(6, 1, CV_32FC1, data);

for (int i = 0; i < 6; ++i)
    printf("%f, ",warp_mat.at<CGFloat>(i));

float data[6] = {0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f};
cv::Mat warp_mat(6, 1, CV_32FC1, data);

for (int i = 0; i < 6; ++i)
    printf("%f, ",warp_mat.at<float>(i));