LoginSignup
0
0

More than 3 years have passed since last update.

[Python]実質二次元の三次元ndarrayから二次元要素を抽出

Posted at

OpenCVのHoughLinesP( )関数の戻り値が三次元配列である事に気付いてから列を抽出するまでけっこうかなりすごく悩んだので覚え書きしておきます。

ハフ変換の戻り値 X(抜粋)
[[[249 138 400 138]]
 [[405 139 400  60]]
 [[404 230 404  61]]
 [[418 137 486 137]]]

目的は、ここからy軸の値(1, 3列目)だけ抽出すること。

抽出したい値
[[138 138]
 [139  60]
 [230  61]
 [137 137]]

【参考にさせてもらったURL】
[Python]Numpyの参照、抽出、結合

…を参照して、X[:, [1, 3]]としてみた。

print X[:, [1, 3]]

#結果
index 1 is out of bounds for axis 1 with size 1

要素 1 は範囲外でござい」エラー。
…までは理解できた。

print X[0][:, [1, 3]]

#結果
[[138 138]]

ここから混乱。
リストと配列の違いを飲み込めていなかったのが原因。

解決
X[:, 0][:, 1, 3]

#または
X[0, :][:, 1, 3]

#結果
[[138 138]
 [139  60]
 [230  61]
 [137 137]]

こう、まとめてみると何のことはないのだが、妙に行き詰まったのでした。
空階層(空次元?)でもあくまで配列として扱わないといけなかった、という話。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0