contours and hirerachy mismatch
Hi When I use the below code without bothering hirerachy , it is able to detect external contours correctly . Pl see the attached file “drawn-NO-hirerachy”. My original image has three external contours .
cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
when I use hirerachy code , it is not detecting external contours correctly . It shows a few points that I red circled in “drawa-with hirerachy”
im,cnts,hierarchy = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Following is the code I am using
# import the necessary packages
import numpy as np
import cv2
import imutils
import pytesseract
from PIL import Image, ImageEnhance
from imutils.perspective import four_point_transform
from array import *
# load the example image
image = cv2.imread("h2.jpg")
# pre-process the image by resizing it, converting it to
# graycale, blurring it, and computing an edge map
image = imutils.resize(image, height=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 50, 200, 255)
#cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
im,cnts,hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
print 'No Of Contours = ', len(cnts)
print 'No Of elements in hirerachy = ', len(hierarchy[0])
print hierarchy
major = cv2.__version__.split('.')[0]
print major
for c in cnts:
cv2.drawContours(image, [c], -1, (0,255,0), 2)
cv2.imshow('EDGED',edged)
cv2.imshow('DRAWN CONTOURS',image)
cv2.imshow('RETURNED IMAGE',im)
cv2.waitKey(0)
@venu. Do you want to draw 6 borders(2 lines + 2 borders + 2 rectangles? Or just 4 borders(2 lines + 2 borders). I still have 6 borders.