您如何在OpenCV中编写 vector ?包含3个类似v = [p1,p2,p3]的值?这是我尝试的:

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

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

最佳答案



您可以使用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
  • 关于c++ - 如何在OpenCV中声明 vector ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36763924/

    10-09 06:36
    查看更多