gpt4 book ai didi

c++ - Mat OpenCv 分配错误

转载 作者:行者123 更新时间:2023-11-28 03:42:52 25 4
gpt4 key购买 nike

我正在为一个项目使用 OpenCV 和 C++,我发现了以下问题:在使用以下语句初始化垫子之后

Mat or_mat=Mat(img->height,img->width,CV_32FC1);

检查以下值

or_mat.at <float> (i, j) = atan (fy / fx) / 2 +1.5707963;

完成后返回垫子用于函数的输出但是当我去读取时有很多值与输出不对应。插入 I-4.31602e +008 的精确值不正确,如果我创建一个 cout,则表达式的值是正确的。可能是什么错误??

相关代码:

Mat or_mat=Mat(img->height,img->width,CV_32FC1);

to angle
if(fx > 0){
or_mat.at<float>(i,j) = atan(fy/fx)/2+1.5707963;
}
else if(fx<0 && fy >0){
or_mat.at<float>(i,j) = atan(fy/fx)/2+3.1415926;
}
else if(fx<0 && fy <0){
or_mat.at<float>(i,j) = atan(fy/fx)/2;
}
else if(fy!=0 && fx==0){
or_mat.at<float>(i,j) = 1.5707963;
}

我要计算指纹图像的局部方位,下面的代码我省略了几个没有错误的语句和计算。

最佳答案

我会三重检查您的索引是否正确。下面的代码显示了我初始化一个全为零的矩阵,然后使用 at .at 运算符用一些 float 填充它。它可以很好地编译和运行:

int main()
{

int height = 10;
int width = 3;

// Initialise or_mat to with every element set to zero
cv::Mat or_mat = cv::Mat::zeros(height, width, CV_32FC1);
std::cout << "Original or_mat:\n" << or_mat << std::endl;

// Loop through and set each element equal to some float
float value = 10.254;
for (int i = 0; i < or_mat.rows; ++i)
{
for (int j = 0; j < or_mat.cols; ++j)
{
or_mat.at<float>(i,j) = value;
}
}

std::cout << "Final or_mat:\n" << or_mat << std::endl;

return 0;
}

关于c++ - Mat OpenCv 分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com