ошибка: OpenCV (4.2.0) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ resize. cpp: 4045: ошибка: (-215: утверждение не выполнено) - PullRequest
0 голосов
/ 06 мая 2020

У меня есть список серых изображений. Я прочитал их с помощью этого кода:

import glob
import cv2


folders = glob.glob(r'path\to\images\*')
imagenames_list = []
for folder in folders:
    for f in glob.glob(folder+'/*.png'):
        imagenames_list.append(f)

read_images = []        

for image in imagenames_list:
    read_images.append(cv2.imread(image, cv2.IMREAD_GRAYSCALE))

Теперь я пытаюсь изменить размер всех изображений в read_images с помощью этой функции:

def resize_images(img, new_width, new_height):
    size = (new_width, new_height)
    resized_img = cv2.resize(img, size)
    return resized_img

Я применил функцию следующим образом :

resized_img = [resize_images(img, new_width=128, new_height=32) for img in read_images]

И Python вернул такую ​​ошибку:

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-21-9352534280fd> in <module>
      1 #Anwenden der Funktion auf die Liste col_image
----> 2 resized_img = [resize_images(img, new_width=128, new_height=32) for img in read_images]

<ipython-input-21-9352534280fd> in <listcomp>(.0)
      1 #Anwenden der Funktion auf die Liste col_image
----> 2 resized_img = [resize_images(img, new_width=128, new_height=32) for img in read_images]

<ipython-input-20-e4d9e7d9b2fa> in resize_images(img, new_width, new_height)
      2 def resize_images(img, new_width, new_height):
      3     size = (new_width, new_height)
----> 4     resized_img = cv2.resize(img, size)
      5     return resized_img

error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4045: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'

Может кто поможет? Какая дополнительная информация вам нужна? Я уже применил эту функцию к списку меньшего количества изображений (около 650 изображений), и она сработала. Сейчас в этом списке более 180к изображений. Кроме того, размеры изображений разные, но они также были другими для других 650 изображений.

1 Ответ

1 голос
/ 06 мая 2020

Попробуйте это, чтобы выяснить, где что-то идет не так. Надеюсь, он скажет вам, какой файл вызывает сбой l oop.

import glob
import cv2
from cv2 import error


def resize_images(img_, new_width, new_height):
    size = (new_width, new_height)
    resized_img_ = cv2.resize(img_, size)
    return resized_img_


folders = glob.glob(r'path\to\images\*')
img_names_list = []
read_imgs = []
resized_imgs = []
for folder in folders:
    for file in (glob.glob(folder+'/*.png')):
        img_names_list.append(file)
        img = cv2.imread(file, cv2.IMREAD_GRAYSCALE)
        read_imgs.append(img)
        try:
            resized_img = resize_images(img, new_width=128, new_height=32)
            resized_imgs.append(resized_img)
            # print(file, img, resized_img)
        except error as err:
            print(f'{file} returns {img}. Resize does not work')
            print(err)
...