Я пытался обрезать таблицу по изображению, поэтому я использовал контуры, чтобы найти границу таблицы, а затем обрезать ее.
Код, который я использую:
import cv2
import matplotlib.pyplot as plt
def contours(img):
"""
Returns a list of contours.
"""
img2 = img.copy()
binary = cv2.Canny(img, 10, 10)
im2, contours, hierarchy =
cv2.findContours(binary,cv2.cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
return contours,hierarchy
def plot(img):
plt.figure(figsize=(25,25))
plt.imshow(img)
plt.show()
img = cv2.imread('door1.jpg')
img = cv2.resize(img,(1780, 1240))
conts,hie=contours(img)
bbox = []
img_area = img.shape[0] * img.shape[1]
for i, cnt in enumerate(conts):
bb = cv2.boundingRect(cnt)
area = bb[2]*bb[3]
if (area > img_area / 50):
bbox.append(bb)
print(bb[1],bb[1]+bb[3],bb[0],bb[2]+bb[0])
plot(img[bb[1]:bb[1]+bb[3],bb[0]:bb[2]+bb[0]])
ИзображениеЯ работаю над (размер изображения превышает 2 МБ, поэтому я предоставил ссылку на диск Google): https://drive.google.com/open?id=1StRrYsBSZrTQo1jQJzs6D9tK771R5le_
Обрезанные изображения, которые я могу получить: (1) (2) (3) (4)
2-е обрезанное изображение содержит таблицу, но оно также дает дополнительную область, и я хочу обрезать толькостол.Количество обрезанных изображений на выходе не является проблемой, просто одно из них должно быть таблицей.Я новичок в обработке изображений и не знаю, как решить эту проблему.