Part - 1 - Feature Detectors: Harris Corner Detector: Opencv Program
Part - 1 - Feature Detectors: Harris Corner Detector: Opencv Program
21BLC1268
OpenCV program:
import cv2
import numpy as np
import sys
import getopt
import operator
def readImage(filename):
img = cv2.imread(filename, 0)
if img is None:
print('Invalid image:' + filename)
return None
else:
print('Image successfully read...')
return img
cornerList = []
newImg = img.copy()
color_img = cv2.cvtColor(newImg, cv2.COLOR_GRAY2RGB)
offset = window_size/2
#If corner response is over threshold, color the point and add to corner list
if r > thresh:
print x, y, r
cornerList.append([x, y, r])
color_img.itemset((y, x, 0), 0)
color_img.itemset((y, x, 1), 0)
color_img.itemset((y, x, 2), 255)
return color_img, cornerList
def main():
"""
Main parses argument list and runs findCorners() on the image
:return: None
"""
args, img_name = getopt.getopt(sys.argv[1:], '', ['window_size=',
'k_corner_response=', 'corner_threshold='])
args = dict(args)
print args
window_size = args.get('--window_size')
k = args.get('--k_corner_response')
thresh = args.get('--corner_threshold')
img = readImage(img_name[0])
if img is not None:
if len(img.shape) == 3:
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
if len(img.shape) == 4:
img = cv2.cvtColor(img, cv2.COLOR_RGBA2GRAY)
print "Shape: " + str(img.shape)
print "Size: " + str(img.size)
print "Type: " + str(img.dtype)
print "Printing Original Image..."
print(img)
finalImg, cornerList = findCorners(img, int(window_size), float(k), int(thresh))
if finalImg is not None:
cv2.imwrite("finalimage.png", finalImg)
if __name__ == "__main__":
main()
Input image:
Output image: