【问题标题】:error: OpenCV(4.1.0) error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'错误:OpenCV(4.1.0) 错误:(-215:Assertion failed) !ssize.empty() in function 'cv::resize'
【发布时间】:2019-12-07 11:07:42
【问题描述】:

这是我得到的错误:

错误:OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3718: error: (-215:Assertion failed) !ssize.empty() in函数'cv::resize'

已检查损坏的文件。

cat 是一个包含 1000 个图像 (RGB) 的数组。

我正在尝试将这些图像压缩为 (50,50) 灰度。

def greyscale_compress(img):
    new_img = cv2.resize(img, (50,50))
    img_gray = cv2.cvtColor(new_img, cv2.COLOR_BGR2GRAY)
    return img_gray

cat_bin = []
for i in range(0, 100):
    cat_bin.append(greyscale_compress(cat[i]))

【问题讨论】:

  • 如果您遇到此类错误,可能是因为您的边界框有问题。在这种情况下,我建议您检查异常情况,而不是在 except 子句中留下一个 break

标签: python tensorflow opencv


【解决方案1】:

我遇到了同样的问题,但我解决了。我有这条路:

/content/drive/MyDrive/skincancer/data/train/benign

我通过在路径末尾添加/ 解决了这个问题,如下所示:

/content/drive/MyDrive/skincancer/data/train/benign/

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:
X = []
count = 0

path = TRAIN_PATH_X
for img in os.listdir(TRAIN_PATH_X):
    image = cv2.imread(os.path.join(path, img), cv2.IMREAD_GRAYSCALE)
    try:
        image = cv2.resize(image, (IMG_HEIGHT, IMG_WIDTH), interpolation=cv2.INTER_AREA)
        print(image.shape)
    except:
        break
    X.append([image])
    count = count +1
print(count)

【讨论】:

    【解决方案3】:

    解决问题的方法是更正文件并删除我拥有的0 0 0 0 边界框。

    在突出显示的行处,有一个框0 0 0 0。我将该行从positive/person_0004.jpg 2 0 0 0 0 63 30 148 185 修改为positive/person_0004.jpg 1 63 30 148 185

    请注意,我还更改了盒子的数量。 2 -> 1.

    【讨论】:

      【解决方案4】:

      那是因为open cv 在给定目录中找不到任何图像

      检查您可能错过的路径/ 为了安全起见,请尝试

      images = [img for img in os.listdir(image_path) if img.endswith(".jpg")]
      

      images = [img for img in os.listdir(image_path) if img.endswith("anyformat")]
      

      【讨论】:

        【解决方案5】:

        它的出现有以下两个原因:

        1. 您用于读取图像的图像路径不存在。

        解决方案:重新检查图片路径,尤其是反斜杠和圆点。

        1. 您尝试读取的图像是 NoneType 损坏的图像。

        解决方案:重新下载图片或将其删除。

        【讨论】:

          【解决方案6】:

          Cat[i]在你的代码中是做什么的,

          如果文件夹中有 1000 张图像,您必须列出图像目录 (os.listdir) 并通过循环应用您的函数来逐个读取它们。

          除此之外,您的压缩功能正确且工作正常, 我建议先转换灰度然后应用调整大小的其他东西,可能会产生更好的插值。

          【讨论】:

            【解决方案7】:

            当我通过包含图像名称和路径的标签将图像导入列表时遇到了同样的问题。

            我的问题是由于标签列表中有一个空白区域。

            我通过从标签列表中删除空格来解决此问题:

            【讨论】:

              【解决方案8】:

              通常这个问题是由于调整图像大小而发生的,我只是应用 try 和 catch 语句来调整图像大小,以便处理任何错误。它工作正常,没有出现与形状相关的错误。

               img=cv2.imread(filename)
                  print(img)
                      try:
                         img = cv2.resize(img, (1400, 1000), interpolation=cv2.INTER_AREA)
                          print(img.shape)
                      except:
                      break
                  height, width , layers = img.shape
                  size=(width,height)
                  print(size)
              

              【讨论】:

              • 如果您遇到此类错误,可能是因为您的边界框有问题。在这种情况下,我建议您检查异常情况,而不是在 except 子句中留下一个 break
              【解决方案9】:

              这是无法从相机或电影文件接收到的错误。确保视频文件名与代码相同,并且在同一目录下。

              【讨论】:

              • 我使用的是图片,不是视频文件
              • 图片也一样。您应该检查代码中的文件名和图像名。
              • 如果您的目录包含图像以外的文件,它可能会产生像您这样的错误。检查目录,看看它是否只有图像文件。
              猜你喜欢
              • 2020-10-13
              • 1970-01-01
              • 2022-08-12
              • 2021-04-09
              • 1970-01-01
              • 2021-08-16
              • 2019-06-26
              • 1970-01-01
              • 2020-08-21
              相关资源
              最近更新 更多