ValueError при укладке изображений в python - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь сфокусировать несколько изображений, но получаю сообщение об ошибке ниже. Почему я получаю эту ошибку и как ее исправить?

Будем весьма благодарны за любые советы и фрагменты кода о том, как решить эту проблему.

Я посмотрел на этот пост , но все еще не уверен в значении этой ошибки в моем сценарии.

Файл "/ Users / ...", строка 32, в стеке максимум = abs_laps.max (ось = 0)

Файл "/anaconda3/lib/python3.5/site-packages/numpy/core/_methods.py", строка 26, в _amax return umr_maximum (a, ось, None, out, keepdims)

ValueError: Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any () или a.all ()

Метод стека, указанный в приведенной выше ошибке, представлен ниже, как и метод укладки.

def stacker(folder, num):
    images = []
    for filename in os.listdir(folder):
        img = cv2.imread(os.path.join(folder,filename))
        if img is not None:
            images.append(img)
    stacked = stack(images)
    newpath = "key-frames" #destination of final image
    os.chdir(newpath)
    cv2.imwrite("Stacked%d.png" % num, stacked)

Метод стека ниже

def stack(imgs):
    #aligns the images
    images = imageAlignment(imgs)
    laps = []

    #loop through images and compute lap
    for i in range(len(images)):
        grayImg = cv2.cvtColor(images[i],cv2.COLOR_BGR2GRAY)
        laps.append(findLap(grayImg))

    #converts input to array
    laps = np.asarray(laps)

    #creates empty array
    output = np.zeros(shape=images[0].shape, dtype=images[0].dtype)

    #find absolute value of laps
    abs_laps = np.absolute(laps)

    #find maximum of laps
    maximum = abs_laps.max(axis=0)

    #boolean to determine if lap for image is max
    booleanChecker = abs_laps == maximum

    #pixels are unit8 and uint8 will wrap
    mask = booleanChecker.astype(np.uint8)

    #inverts every bit of array using mask that specifies of output array 
    #to be changed
    for i in range(0,len(images)):
        output = cv2.bitwise_not(images[i],output, mask=mask[i])

    return 255 - output

EDIT

Ниже приведен пример того, из чего сделан abs_laps.

[0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00 0,000e + 00> 0,000e + 00 0,000e + 00 0,000e + 00 2,000e + 00 1,600e + 01 6,400e + 01 1,800e + 02> 3,800e + 02]

1 Ответ

0 голосов
/ 11 июля 2018

Произошла ошибка в ваших входных данных. Вы должны распечатать, на каком изображении нарушается код, и проверить данные. Скорее всего, у вас есть пустое изображение в наборе изображений для укладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...