Я заинтересован в обнаружении линий (которые мне удалось выяснить с помощью грубого преобразования) и текста над ним.
Мое тестовое изображение ниже:
Код, который я написал ниже. (Я отредактировал так, чтобы я мог l oop через координаты каждой линии)
import cv2
import numpy as np
img=cv2.imread('test3.jpg')
#img=cv2.resize(img,(500,500))
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgEdges=cv2.Canny(imgGray,100,250)
imgLines= cv2.HoughLinesP(imgEdges,1,np.pi/180,230, minLineLength = 700, maxLineGap = 100)
imgLinesList= list(imgLines)
a,b,c=imgLines.shape
line_coords_list = []
for i in range(a):
line_coords_list.append([(int(imgLines[i][0][0]), int(imgLines[i][0][1])), (int(imgLines[i][0][2]), int(imgLines[i][0][3]))])
print(line_coords_list)#[[(85, 523), (964, 523)], [(85, 115), (964, 115)], [(85, 360), (964, 360)], [(85, 441), (964, 441)], [(85, 278), (964, 278)], [(85, 197), (964, 197)]]
roi= img[int(line_coords_list[0][0][1]): int(line_coords_list[0][1][1]), int(line_coords_list[0][0][0]) : int(line_coords_list[0][1][0])]
print(roi) # why does this print an empty list?
cv2.imshow('Roi NEW',roi)
Теперь я просто не знаю, как определить интересующую область над этими линиями. Можно ли сказать обрезать каждую строку и иметь изображения, например, roi_1, roi_2, roi_n, где каждый roi - это текст над первой строкой, текст над второй строкой et c?
Мне бы хотелось вывод будет примерно таким.