如何在OpenCV中声明向量?

时间:2016-04-21 08:27:49

标签: c++ qt opencv vector

如何在OpenCV中编写矢量?包含3个像v = [p1,p2,p3]这样的值?这就是我试过的:

int dim [1] = {3};
Mat v(1,dim,CV_32F, Scalar(p1,p2,p3));

但是当我在Qt中进行调试时,我在本地和表达式窗口中看到向量v确实有1列和3行,但也有2个暗淡。我想知道这是否是由于声明中的Mat类型。 我可以用哪种类型替换它来获得3个值的简单向量?

1 个答案:

答案 0 :(得分:5)

  

我可以使用哪种类型来获得3个值的简单向量?我想对这个向量做一些操作,比如使用norm并改变它的元素。

您可以使用cv::Vec类型。

假设您正在使用double值(同样适用于其他类型),您可以:

// Create a vector
Vec3d v;

// Assign values / Change elements
v[0] = 1.1;
v[1] = 2.2;
v[2] = 3.3;

// Or initialize in the constructor directly 
Vec3d u(1.1, 2.2, 3.3);

// Read values
double d0 = v[0];

// Compute the norm, using cv::norm 
double norm_L2 = norm(v, NORM_L2); // or norm(v);
double norm_L1 = norm(v, NORM_L1);

有关:

  • double输入Vec3d
  • float输入Vec3f
  • int输入Vec3i
  • short输入Vec3s
  • ushort输入Vec3w
  • uchar输入Vec3b