gpt4 book ai didi

python - 如何从左到右和从上到下对轮廓进行排序?

转载 作者:行者123 更新时间:2023-11-28 18:29:26 26 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Python 构建一个字符识别程序。我坚持对轮廓进行排序。我正在使用 this page作为引用。

我设法使用以下代码找到了轮廓:

mo_image = di_image.copy()
contour0 = cv2.findContours(mo_image.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contours = [cv2.approxPolyDP(cnt,3,True) for cnt in contour0[0]]

并使用这部分代码添加边界矩形并分割图像:

maxArea = 0
rect=[]
for ctr in contours:
maxArea = max(maxArea,cv2.contourArea(ctr))

if img == "Food.jpg":
areaRatio = 0.05
elif img == "Plate.jpg":
areaRatio = 0.5

for ctr in contours:
if cv2.contourArea(ctr) > maxArea * areaRatio:
rect.append(cv2.boundingRect(cv2.approxPolyDP(ctr,1,True)))

symbols=[]
for i in rect:
x = i[0]
y = i[1]
w = i[2]
h = i[3]
p1 = (x,y)
p2 = (x+w,y+h)
cv2.rectangle(mo_image,p1,p2,255,2)
image = cv2.resize(mo_image[y:y+h,x:x+w],(32,32))
symbols.append(image.reshape(1024,).astype("uint8"))

testset_data = np.array(symbols)

cv2.imshow("segmented",mo_image)
plt.subplot(2,3,6)
plt.title("Segmented")
plt.imshow(mo_image,'gray')
plt.xticks([]),plt.yticks([]);

然而,生成的片段似乎是随机排列的。这是原始图像,后跟带有检测到的片段的处理图像。

segments

程序然后分别输出每个段,但是它的顺序是:4 1 9 8 7 5 3 2 0 6 而不是 0 1 2 3 4 5 6 7 8 9 。只需在“rect”中添加排序操作即可修复此问题,但同样的解决方案不适用于包含多行的文档。

所以我的问题是:如何从左到右、从上到下对轮廓进行排序?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com