Corner Detection with Python and OpenCV
Join the DZone community and get the full member experience.
Join For FreeCorner detection is an approach used within computer vision systems to
extract certain kinds of features and infer the contents of an image [Ref]. We have seen in the previous post
how to perform an edge detection using the Sobel operator. Using the
edges, we can define a corner as a point for which there are two
dominant and different edge directions in a local neighborhood of the
point.
One of the most used tool for corner detection is the Harris Corner Detector
operator. OpenCV provide a function that implement this operator. The
name of the function is CornerHarris(...) and the corners in the image
can be found as the local maxima of the returned image. Let's see how to
use it in Python:
imcolor = cv.LoadImage('stairs.jpg') image = cv.LoadImage('stairs.jpg',cv.CV_LOAD_IMAGE_GRAYSCALE) cornerMap = cv.CreateMat(image.height, image.width, cv.CV_32FC1) # OpenCV corner detection cv.CornerHarris(image,cornerMap,3) for y in range(0, image.height): for x in range(0, image.width): harris = cv.Get2D(cornerMap, y, x) # get the x,y value # check the corner detector response if harris[0] > 10e-06: # draw a small circle on the original image cv.Circle(imcolor,(x,y),2,cv.RGB(155, 0, 25)) cv.NamedWindow('Harris', cv.CV_WINDOW_AUTOSIZE) cv.ShowImage('Harris', imcolor) # show the image cv.SaveImage('harris.jpg', imcolor) cv.WaitKey()
The following image is the result of the program:
The red markers are the corners found by the OpenCV's function.
Source: http://glowingpython.blogspot.com/2011/10/corner-detection-with-opencv.html
Opinions expressed by DZone contributors are their own.
Comments