为什么 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));
我有以下代码:
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));