1. ホーム
  2. c++

[解決済み] OpenCVでベクトルを宣言するには?

2022-02-12 21:19:13

質問

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つの値からなる単純なベクトルになるのでしょうか?

どのように解決するのですか?

<ブロッククオート

3つの値からなる単純なベクトルを得るには、どの型を使用すればよいでしょうか。このベクトルに対して、ノルムを使ったり、要素を変更したりといった操作を行いたいのです。

を使用することができます。 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