To find the coordinates of corners detected by Harris corner detection

I have applied harris corner detection on the following image

and obtained the result as

and now i want to find the coordinates of these corner pixels marked in red how do i do so?

Code:

import numpy as np

import cv2

h,w,l=img.shape

res=cv2.resize(img,(w/4,h/4),interpolation=cv2.INTER_LINEAR)

gray = cv2.cvtColor(res,cv2.COLOR_BGR2GRAY)

gray = np.float32(gray)

dst = cv2.cornerHarris(gray,2,3,0.04)

cv2.imwrite('dsttest.jpg',dst)

dst = cv2.dilate(dst,None)

res[dst>0.01*dst.max()]=[0,0,255]

points=np.unravel_index(dst.argmax(),dst.shape)

print list(points)

cv2.imwrite('dst.jpg',res)

cv2.waitKey(0)

cv2.destroyAllWindows()

edit retag close merge delete

I want to be able to find out the coordinates of the corner points, the points in red aren't going to give me a single pixel value since each of them comprise of several pixels.I need this information so that i can automatically separate the image into it's constituent squares by using numpy array slicing

( 2018-03-12 14:32:34 -0500 )edit

first of all, don't dilate the dst image. from there on it's basically non-maximum-suppression

(and probably you need a higher threshold value)

( 2018-03-12 15:20:36 -0500 )edit

Hi @csthakur Were you able to solve this issue. I am also working on similar problem where i am trying to find the corners of a grid and then slice it. I was trying to find the lines using HoughTransformP, seperate horizontal and vertical line, and then detect the point of intersections. Do let me know if you were able to solve this problem.

( 2018-12-11 09:57:19 -0500 )edit

It will of great help for me & others like me if you add your solution in the answers below and accept it as a right answer.

( 2018-12-11 09:59:54 -0500 )edit

@sai teja are you using python

( 2018-12-11 10:07:29 -0500 )edit

Yes @sturkmen i am using python.

( 2018-12-11 19:04:36 -0500 )edit

Sort by ยป oldest newest most voted

import cv2 import numpy as np

filename = 'chessboard2.jpg' img = cv2.imread(filename) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

find Harris corners

gray = np.float32(gray) dst = cv2.cornerHarris(gray,2,3,0.04) dst = cv2.dilate(dst,None) ret, dst = cv2.threshold(dst,0.01*dst.max(),255,0) dst = np.uint8(dst)

find centroids

ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)

Now draw them

res = np.hstack((centroids,corners)) res = np.int0(res) img[res[:,1],res[:,0]]=[0,0,255] img[res[:,3],res[:,2]] = [0,255,0]

cv2.imwrite('subpixel5.png',img)

more