如何在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个值的简单向量?
答案 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