在 python 中使用 opencv 对图像进行高斯模糊时出现错误。之前代码运行正常,突然出现错误

I'm getting an error during the gaussian blur of an image using opencv in python. The code was working properly before and error appeared suddenly

我写了下面的代码:

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 但错误仍然存​​在。

此错误最常发生在您的代码没有收到正确的图像时,也就是说,图像的路径可能无效或图像本身存在一些问题。问题是您可以尝试检查您的图像是否正确加载:

cv2.imshow('image',img)

这个命令用于在OpenCV中显示图像,我想你显然很熟悉。因此,在使用高斯模糊之前使用此命令只是为了验证您提供的图像是否正确加载。

如果没有显示图像,那么您可以确定您遇到了上述问题之一!您现在将在此行中收到 Assertion failed 错误。

PS:ROI的完整形式是Region of Interest。在您的情况下,OpenCV 无法定位它将执行高斯模糊的感兴趣区域。