gpt4 book ai didi

c++ - 从mat C openCV获取数据

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:10 24 4
gpt4 key购买 nike

我有一些 C++ openCV 代码。

有点像

void foo(...., Mat mx){
...
x_d = mx.at<float>(x,y);
...
}

我尝试用 C 重写这部分。我读了 docs他们说数据在 CvMap 结构中是 union 的。但是我在尝试获取它时收到了不同的错误消息。他们在这里:

void foo(...., CvMat *mx){
...
x_d = *(((float*)mx->data) + y * width + x); // cannot convert to a pointer type
x_d = *(mx->data + y * width + x); // invalid operands to binary + (have 'union <anonymous>' and 'int')
...
}

所以我有两个问题。我怎样才能从这段代码的结构中得到那个 float ?这是我需要的数据吗?

最佳答案

您可以使用 Get?D功能,或 CV_MAT_ELEM宏。

请看下面的例子:

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
CvMat* m = cvCreateMat(2, 3, CV_32FC1);
cvSet(m, cvScalar(1.0f));
cvSet2D(m, 0, 1, cvScalar(2.0f));

// m
// 1.0 2.0 1.0
// 1.0 1.0 1.0

// Using cvGet2d

CvScalar v00 = cvGet2D(m, 0, 0);
float f00 = v00.val[0];
// f00 = 1.0

CvScalar v01 = cvGet2D(m, 0, 1);
float f01 = v01.val[0];
// f00 = 2.0

// Using CV_MAT_ELEM

float g00 = CV_MAT_ELEM(*m, float, 0, 0);
// g00 = 1.0

float g01 = CV_MAT_ELEM(*m, float, 0, 1);
// g01 = 2.0


return 0;
}

关于c++ - 从mat C openCV获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464229/

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