web-dev-qa-db-ja.com

OpenCV NoneTypeオブジェクトには属性形状がありません

こんにちは私はOpenCVでRaspberry Piに取り組んでいます。リンクのボールトラッキングであるチュートリアルを試してみたい http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

しかし、コンパイルするとエラーが発生します。「NoneType」オブジェクトには属性「形状」がありません。

私は何をすべきか?

7
user3748265

これは、画像を返すはずの関数がNoneを返したため、shape属性がないことを意味します。 「imgを印刷」して、画像がNoneであるか、実際のnumpyオブジェクトであるかを確認してください。

17
asc11

今日、同じ問題に直面しました。cybseccryptで言及されているように、画像のパスを確認してください。読影後、画像を印刷してみてください。値を取得した場合は、ファイルが開いていることを意味します。

コード:

img_src = cv2.imread('/home/deepak/python-workout/box2.jpg',0) print img_src

お役に立てれば!

7
Deepak V

ビデオパスが何らかの方法で間違っている可能性があるため、おそらくエラーが発生します。パスが完全に正しいことを確認してください。

4
aysebilgegunduz

私はこの問題にも遭遇し、デバッグに多くの時間を費やしました。

最初に、指定したパスが有効であること、つまりそのパスに画像があることを確認してください。

次に、Opencvがユニコード文字を含む画像パスをサポートしていないことに注意してください( ref を参照)。画像パスにUnicode文字が含まれている場合は、次のコードを使用して画像を読み取ることができます。

import numpy as np
import cv2

# img is in BGR format if the underlying image is a color image
img = cv2.imdecode(np.fromfile(im_path, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
0
jdhao

人工的に作成された画像、つまりそれらを自分で作成し、特定のタスクを実行するようにニューラルネットワークをトレーニングします。それで、これらの画像を作成して保存しましたが、(cv2.imread(...)で)開こうとすると、このエラーが発生しました。人為的に保存- 作成追加する必要がある画像dtype = np.uint8。これで問題は解決しました!

0

これは、画像のパスが間違っているか、書き込んだ画像の名前が間違っているためです。

確認する方法?最初に「None」と表示される場合は、print(img)を使用して画像を印刷してみてください。これは、間違った画像パスを指定したことを意味し、そのパスを修正して再試行します。

0
sachinsaini

私は同じ問題に出会うだけです。 OpenCVの最新バージョンを更新することで解決します。それは私とうまく動作します。それもあなたと一緒に大丈夫だと思います。

0
Son Tran Hoang

同じ問題「OpenCV NoneTypeオブジェクトに属性の形状がない」にも直面しており、画像の場所を変更することでこれを解決します。 PyCharm IDEも使用しています。現在、同じフォルダにあるイメージの場所とクラスファイル。 enter image description here

0
Md. Shofiulla

エラーを処理しようとします。これは、OpenCVによって与えられた属性エラーです

try:
    img.shape
    print("checked for shape".format(img.shape))
except AttributeError:
    print("shape not found")
    #code to move to next frame
0
Sir Tesla

これが同じ問題に直面している人を助けることを願っています

実行中のプログラムは行番号のエラーとしてそれを言及していないので、どこが発生したかを正確に知るため

'NoneType' object has no attribute 'shape'

image/frameを読み込んだ後、必ずassertを追加してください

画像について

image = cv2.imread('myimage.png')
assert not isinstance(image,type(None)), 'image not found'

ビデオ用

cap = cv2.VideoCapture(0)

    while(cap.isOpened()):

        # Capture frame-by-frame
        ret, frame = cap.read()
        if ret:
            assert not isinstance(frame,type(None)), 'frame not found'

長いスクリプトで同様の問題を解決するのに役立ちました