# Python code to find the co-ordinates of # the contours detected in an image. import numpy as np import cv2 # Reading image font = cv2.FONT_HERSHEY_COMPLEX img2 = cv2.imread('card.jpg', cv2.IMREAD_COLOR) # Reading same image in another # variable and converting to gray scale. img = cv2.imread('card.jpg', cv2.IMREAD_GRAYSCALE) # Converting image to a binary image # ( black and white only image). _, threshold = cv2.threshold(img, 110, 255, cv2.THRESH_BINARY) # Detecting contours in image. contours, _= cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # Going through every contours found in the image. for cnt in contours : approx = cv2.approxPolyDP(cnt, 0.009 * cv2.arcLength(cnt, True), True) # draws boundary of contours. cv2.drawContours(img2, [approx], 0, (0, 0, 255), 5) # Used to flatted the array containing # the co-ordinates of the vertices. n = approx.ravel() i = 0 for j in n : if(i % 2 == 0): x = n[i] y = n[i + 1] # String containing the co-ordinates. string = str(x) + " " + str(y) if(i == 0): # text on topmost co-ordinate. cv2.putText(img2, "Arrow tip", (x, y), font, 0.5, (255, 0, 0)) else: # text on remaining co-ordinates. cv2.putText(img2, string, (x, y), font, 0.5, (0, 255, 0)) i = i + 1 # Showing the final image. cv2.imshow('image2', img2) # Exiting the window if 'q' is pressed on the keyboard. if cv2.waitKey(0) & 0xFF == ord('q'): cv2.destroyAllWindows()