Как правильно реализовать размытие по Гауссу с помощью cv2?

#python #image-processing #cv2

#python #обработка изображений #cv2

Вопрос:

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

 error                                     Traceback (most recent call last)
<ipython-input-10-2d3a348b0b9b> in <module>()
     25 
     26 #gaussian blur (sigma = 1)
---> 27 gaus_blur1 = cv2.GaussianBlur(img,(0,0), 1, 1)
     28 cv2_imshow(gaus_blur1[2000])
     29 

error: OpenCV(4.1.2) /io/opencv/modules/core/src/matrix.cpp:757: error: (-215:Assertion failed) dims <= 2 amp;amp; step[0] > 0 in function 'locateROI'
  

Когда я пытаюсь сделать

 for k in range (7165):
  img[k] = cv2.imread('/content/FIGURE/figure'   str(k)  '.png', 1) 
                                    #storing images into array of integers

img_neg = 255 - img    #taking the negative

#cv2_imshow(img_neg[2000])

#voxel form

#gaussian blur (sigma = 1)
gaus_blur1 = cv2.GaussianBlur(img_neg,(0,0), 1, 1)
  

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

Комментарии:

1. Какая строка кода выдает вам эту ошибку? Пожалуйста, покажите полную обратную трассировку, а не только ошибку.

2. @AKX Я отредактировал его. Ошибка выдается самим cv2.GaussianBlur

Ответ №1:

Хотя отсутствие контекста в вашем вопросе все еще не совсем понятно, кажется, вы пытаетесь размыть массив изображений, а не одно 2D-изображение

Размытие каждого изображения отдельно:

 # could be some other structure than dicts, but it's not clear from the question
img = {}  
gaus_blur = {}

for k in range(7165):
    image = cv2.imread("/content/FIGURE/figure"   str(k)   ".png", 1)
    img[k] = image  # store original image
    gaus_blur[k] = cv2.GaussianBlur(255 - image, (0, 0), 1, 1)  # store inverse blurred image


  

Комментарии:

1. Это сработало. img и gaus_blur были определены как np.empty векторы. Единственным способом было их размытие. Спасибо!