, когда я пытаюсь запустить этот код, чтобы использовать алгоритм преобразования ширины штриха в Ссылка Dropbox , появляется эта ошибка:
D: /swt_up.py, строка 305, в _find_letters
fulllayer = np.zeros ((shape_w, shape_h), dtype = np.uint16)
Ошибка памяти
def _find_letters(swt, shapes, shape_h, shape_w):
# STEP: Discard shapes that are probably not letters
swts = []
heights = []
widths = []
topleft_pts = []
images = []
for label,layer in shapes.items():
#print(label)
#print((layer[0],layer[1]))
(nz_y, nz_x) = (layer[0],layer[1])
east, west, south, north = max(nz_x), min(nz_x), max(nz_y), min(nz_y)
width, height = east - west, south - north
if width < 4 or height < 4:
continue
if width / height > 10 or height / width > 10:
continue
diameter = math.sqrt(width * width + height * height)
median_swt = np.median(swt[(nz_y, nz_x)])
#if diameter / median_swt > 10:
# continue
#if width / shape_w > 0.4 or height / shape_h > 0.4:
# continue
#if diagnostics:
# print (" written to image.")
# print(layer )
# cv2.imwrite('layer'+ str(label) +'.jpg', layer*255)
# we use log_base_2 so we can do linear distance comparison later using k-d tree
# ie, if log2(x) - log2(y) > 1, we know that x > 2*y
# Assumption: we've eliminated anything with median_swt == 1
swts.append([math.log(median_swt, 2)])
heights.append([math.log(height, 2)])
topleft_pts.append(np.asarray([north, west]))
widths.append(width)
fulllayer = np.zeros((shape_w, shape_h), dtype=np.uint16)
for i in range(len(layer[0])):
fulllayer[layer[0][i], layer[1][i]] = 1
images.append(fulllayer)
return swts, heights, widths, topleft_pts, images
Как я могу решить эту проблему? Я не могу найти какую-либо ошибку, может быть, это ошибка ОС Windows, но я не знаю, как ее исправить.
Спасибо всем