cv :: Mat Opencvのチャネル数を特定できますか OpenCV 1のこの質問に答えます:画像のMat.channels()
メソッドを使用します。
しかし、cv2(2.4.6を使用しています)では、画像データ構造にchannels()
メソッドがありません。 Python 2.7を使用しています。
コードスニペット:
cam = cv2.VideoCapture(source)
ret, img = cam.read()
# Here's where I would like to find the number of channels in img.
インタラクティブな試み:
>>> img.channels()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'channels'
>>> type(img)
<type 'numpy.ndarray'>
>>> img.dtype
dtype('uint8')
>>> dir(img)
['T',
'__abs__',
'__add__',
...
'transpose',
'var',
'view']
# Nothing obvious that would expose the number of channels.
助けてくれてありがとう。
_img.shape
_を使用
それはあなたにあらゆる方向のimgの形を提供します。つまり、2D配列(グレースケール画像)の行数、列数。 3D配列の場合は、チャネル数も表示されます。
したがって、len(img.shape)
が2つの場合、チャネルは1つです。
len(img.shape)
が3を与える場合、3番目の要素はチャネル数を与えます。
詳細については、 ここにアクセス
私が知っているように、uはlen(img.shape)ではなくimage.shape [2]を使用してチャネルの数を決定する必要があります。後者は配列の次元を示します。