【问题标题】:OpenCV NoneType object has no attribute shapeOpenCV NoneType 对象没有属性形状
【发布时间】:2017-02-11 12:39:27
【问题描述】:

您好,我正在使用 OpenCV 开发 Raspberry Pi。我想尝试一个教程,它是链接中的球跟踪 http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

但是当我编译它时,我得到一个错误:'NoneType' object has no attribute 'shape'。

我该怎么办?

【问题讨论】:

  • 您可能无法从视频中获得图像。它很可能是空的。检查视频的文件路径。
  • 检查视频的文件路径。我该怎么做?

标签: python opencv raspberry-pi2


【解决方案1】:

这意味着某处应该返回图像的函数只是返回 None ,因此没有形状属性。尝试 “打印图像” 检查您的图像是 None 还是实际的 numpy 对象。

【讨论】:

    【解决方案2】:

    我今天遇到了同样的问题,请检查cybseccrypt提到的图像路径。读取后,尝试打印图像并查看。如果你得到一个值,这意味着文件是打开的。

    代码:

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

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      您可能会收到错误消息,因为您的视频路径在某种程度上可能是错误的。确保您的路径完全正确。

      【讨论】:

        【解决方案4】:

        希望这对遇到同样问题的人有所帮助

        要确切知道发生在哪里,因为正在运行的程序没有将其作为行号错误提及

        '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'
        

        帮我解决了一个类似的问题,在一个很长的脚本中

        【讨论】:

          【解决方案5】:

          我也遇到过这个问题,浪费了很多时间调试。

          首先,请确保您提供的路径有效,即该路径中有图片。

          接下来,您应该知道 Opencv 不支持包含 unicode 字符的图像路径(请参阅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)
          

          【讨论】:

            【解决方案6】:

            尝试处理错误,这是OpenCV给出的属性错误

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

            【讨论】:

              【解决方案7】:

              这是因为图片路径错误或者你写的图片名称不正确。

              如何检查? 首先尝试使用打印图像 打印(图片) 如果它打印“无”,则表示您提供了错误的图像路径,请更正该路径并重试。

              【讨论】:

                【解决方案8】:

                我也遇到了同样的问题。我通过更新最新版本的 OpenCV 来解决它。它对我很有效。希望你也没事。

                【讨论】:

                • (这篇文章似乎没有为问题提供quality answer。请编辑您的答案并改进它,或者将其作为对问题的评论发布。)
                【解决方案9】:

                我使用人工创建的图像,即我自己创建它们,然后在它们上训练一个神经网络来执行某个任务。 所以,我创建了这些图像,保存了它们,但是当我尝试打开它们时(使用 cv2.imread(...)),我得到了这个错误。原来,当 人工保存 创建了图像,您需要添加 dtype=np.uint8。这为我解决了这个问题!

                【讨论】:

                  【解决方案10】:

                  我也面临同样的问题“OpenCV NoneType 对象没有属性形状”,我​​通过更改图像位置来解决这个问题。我也使用 PyCharm IDE。目前我的图像位置和类文件在同一个文件夹中。

                  【讨论】:

                    【解决方案11】:

                    我遇到了同样的问题。我打开了另一个正在使用笔记本电脑摄像头的程序。所以我关闭了那个程序,然后一切正常。我通过检查https://howto.streamlabs.com/streamlabs-obs-9/black-screen-when-using-video-capture-device-elgato-hd-60s-9508找到了这个答案。

                    【讨论】:

                      【解决方案12】:

                      cap = cv2.VideoCapture(0) 遇到了这个问题。我将其更改为cap = cv2.VideoCapture(1),然后它起作用了。由于它没有链接到正确的网络摄像头,它没有返回任何内容。也许这会有助于好运。

                      【讨论】:

                        【解决方案13】:

                        我在尝试查找照片大小时遇到​​此错误。

                        Exception has occurred: AttributeError 'NoneType' object has no attribute 'shape'

                        在谷歌搜索 10 分钟后,我发现了这个链接 OpenCV: Resolving NoneType errors by Adrian Rosebrock。在那篇文章中他提到了

                        传递给 cv2.imread 的图像路径无效

                        虽然这确实解决了我的问题,但我希望它可以解决您的问题。如果没有,我希望您也能在该页面上找到有用的东西

                        【讨论】:

                          【解决方案14】:

                          尝试为图像/视频提供正确的路径,如下所示。 Opencv 也不支持包含 unicode 字符的图像路径,所以试试下面的代码

                          cv2.imread(r'path_to_image/video_with_file_extension', flag)
                          

                          【讨论】:

                            【解决方案15】:

                            这背后的主要问题是图像的链接,请确保提供正确的路径或将图像放在代码的同一文件夹中,以便更好、更轻松地运行。 我就是这样解决问题的。

                            【讨论】:

                            • 这个答案已经提供了很多次了。请避免发布重复的答案。
                            猜你喜欢
                            • 1970-01-01
                            • 2020-05-18
                            • 2016-05-09
                            • 2015-05-07
                            • 2021-12-26
                            • 1970-01-01
                            • 2020-09-19
                            • 2017-08-17
                            相关资源
                            最近更新 更多