查找表轮廓

时间:2018-11-19 11:40:44

标签: opencv image-processing

我试图从图像中裁剪表格,所以我用轮廓找到表格的边界然后裁剪。

我正在使用的代码:

    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_

我可以得到的裁剪图像: (1) (2) (3) (4)

第二张裁剪的图像包含表格,但它也提供了额外的区域,我只想裁剪表格。 输出中裁剪的图像数量不是问题,只是其中一个必须是表格。 我是图像处理的新手,不知道如何解决此问题。

0 个答案:

没有答案