Я получаю сообщение об ошибке во время размытия изображения по Гауссу, используя opencv в python. Раньше код работал правильно и внезапно появилась ошибка - PullRequest
1 голос
/ 27 февраля 2020

Я написал следующий код:

import cv2 
import lxml.etree as xml
import os
import shutil
for filename in os.listdir(paths['labels']):

    with open(paths['labels']+filename,'r'):
        img2 = cv2.imread(filename, cv2.IMREAD_COLOR) 

        # Reading same image in another  
        # variable and converting to gray scale. 
        img = cv2.imread(filename, cv2.IMREAD_GRAYSCALE) 

        # Converting image to a binary image 
        # ( black and white only image). 
        #_, threshold = cv2.threshold(img, 110, 255, cv2.THRESH_BINARY) 

        blur = cv2.GaussianBlur(img,(5,5),0)
        _, threshold = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

        # Detecting contours in image. 
        contours, _= cv2.findContours(threshold, cv2.RETR_TREE,      #here it finds the total number of contours, i.e, number of rectangles in the image file
                                       cv2.CHAIN_APPROX_SIMPLE)

Я получаю сообщение об ошибке в строке 18: (blur = cv2.GaussianBlur(img,(5,5),0)):

Ошибка: (-215:Assertion failed) dims <= 2 && step[0] > 0 in function 'cv::Mat::locateROI'

Раньше код работал правильно, и неожиданно появилась ошибка. Я попытался изменить расширение изображения с jpg на png, но ошибка осталась.

1 Ответ

1 голос
/ 27 февраля 2020

Эта ошибка чаще всего возникает, когда ваш код не получает правильное изображение, то есть, вероятно, неверный путь к изображению или само изображение имеет некоторые проблемы с ним. Дело в том, что вы можете попробовать проверить, правильно ли загружается ваше изображение:

cv2.imshow('image',img)

Эта команда используется для отображения изображения в OpenCV, с которым, я думаю, вы, очевидно, знакомы. Поэтому используйте эту команду, прежде чем использовать Gaussian Blur, просто чтобы убедиться, что изображение, которое вы предоставляете, правильно загружается или нет.

Если изображение не отображается, вы можете быть уверены, что перед вами одно из проблемы, упомянутые выше! Теперь вы получите ошибку подтверждения в этой строке.

PS: полная форма ROI - это область интересов. В вашем случае OpenCV не может найти область интереса, в которой он будет выполнять размытие по Гауссу.

...