我试图从图像中裁剪表格,所以我用轮廓找到表格的边界然后裁剪。
我正在使用的代码:
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 MB以上,因此我提供了我的Google驱动器链接): https://drive.google.com/open?id=1StRrYsBSZrTQo1jQJzs6D9tK771R5le_
第二张裁剪的图像包含表格,但它也提供了额外的区域,我只想裁剪表格。 输出中裁剪的图像数量不是问题,只是其中一个必须是表格。 我是图像处理的新手,不知道如何解决此问题。