Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复此堆栈溢出错误(python)?_Python_Opencv - Fatal编程技术网

如何修复此堆栈溢出错误(python)?

如何修复此堆栈溢出错误(python)?,python,opencv,Python,Opencv,我试图计算图像中补丁中相似颜色像素的数量。我正试图用openCV来实现这一点,并创建了一个函数来实现这一点。 后来我发现openCV中有一个函数可以用来做这件事,但我很好奇为什么它会显示这个错误 import cv2 img = cv2.imread('drops.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.resize(gray, (256, 256)) for i in range (256):

我试图计算图像中补丁中相似颜色像素的数量。我正试图用openCV来实现这一点,并创建了一个函数来实现这一点。 后来我发现openCV中有一个函数可以用来做这件事,但我很好奇为什么它会显示这个错误

import cv2
img = cv2.imread('drops.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

gray = cv2.resize(gray, (256, 256))


for i in range (256):
    for j in range(256):
        gray[i,j] = gray[i,j]//10


def flood(img, i, j, color):
    m = len(img[0])
    n = len(img)

    if (i<0 or i>=m or j<0 or j>=n):
        return 0

    if (img[i,j]!=color):
        return 0

    if (img[i,j]==255): #Error here
        return 0

    img[i,j] = 255

    return (1+flood(img, i+1, j, color) #Error here
    +flood(img, i, j+1, color)
    +flood(img, i-1, j, color)
    +flood(img, i, j-1, color)
    +flood(img, i-1, j-1, color)
    +flood(img, i+1, j-1, color)
    +flood(img, i-1, j+1, color)
    +flood(img, i+1, j+1, color))

def count(img):
    for i in range(256):
        for j in range(256):
            if(img[i,j]!=255):
                print(flood(img,i,j,img[i,j]))

count(gray)

下面给出了图像的输出

plt.imshow(im)
plt.imshow(patches[5])

此错误意味着您有太多的递归调用超出了堆栈限制。您的递归函数有一个无限循环。可能需要修改方法。我将图像大小调整为64x64,效果良好。非常感谢。例如,请参阅,但我需要类似的彩色面片,因此可能有许多面片具有相同的像素值。这就是为什么我必须创建递归函数的原因。你必须创建一个过滤器,然后从图像中提取补丁。我认为下面的链接将帮助你。
import cv2 as cv
from collections import Counter
from pathlib import Path
import os
from matplotlib import pyplot as plt
from sklearn.feature_extraction import image
from collections import Counter
p = Path("/content/gdrive/My Drive/Colab Notebooks/images/cats")
new_p = os.path.join(p,'cat.1.jpg')
im = cv.imread(new_p,cv.COLOR_RGB2BGR)
im = cv.resize(im,(150,150))
patches = image.extract_patches_2d(im, (50,50)) #you can add your own patches
new_list = patches[5].reshape(-1,3).tolist()
res = [str(i) for i in new_list]
print(Counter(res))
plt.imshow(im)
plt.imshow(patches[5])