Чтобы исправить ошибку: не удалось передать входной массив из формы (5,5) в форму (5,5,4) - PullRequest
0 голосов
/ 08 мая 2020

Я хочу предварительно обработать такой набор данных изображения, используя неконтролируемый алгоритм Винера. Но это не работает должным образом. когда я запускаю код, он показывает мне ошибку атрибута значения. Для удобства мой код приведен ниже -

import cv2
import glob
from matplotlib import pyplot as plt
from skimage import io, restoration, img_as_float
import scipy.stats as st
import numpy as np


dataset = glob.glob('input/train/*.png')
directory = 'output/train/'

for img_id, img_path in enumerate(dataset):

    img = img_as_float(io.imread(img_path))

    def gkern(kernlen=21, nsig=2):    #Returns a 2D Gaussian kernel.
        lim = kernlen//2 + (kernlen % 2)/2
        x = np.linspace(-lim, lim, kernlen+1)
        kern1d = np.diff(st.norm.cdf(x))
        kern2d = np.outer(kern1d, kern1d)
        return kern2d/kern2d.sum()

    psf = gkern(5,3)   #Kernel length and sigma

    deconvolved, _ = restoration.unsupervised_wiener(img, psf)

    cl2 = cv2.resize(deconvolved, (512,512), interpolation = cv2.INTER_CUBIC)
    plt.imsave(f"output/unsupervised_{img_id}.png", cl2, cmap='gray')

Я получаю сообщение об ошибке:

File "C:\Users\Junaed\.spyder-py3\unsupervised_wiener.py", line 33, in <module>
deconvolved, _ = restoration.unsupervised_wiener(img, psf)
ValueError: could not broadcast input array from shape (5,5) into shape (5,5,4)

Как я могу исправить эту проблему, Может ли кто-нибудь помочь мне здесь?

...