def _detect(self,im):
'''
void cvCornerHarris( const CvArr* image, CvArr* harris_responce, int block_size, int aperture_size=3, double k=0.04 );
'''
gray = im.asOpenCVBW()
#gray = opencv.cvCreateImage( opencv.cvGetSize(cvim), 8, 1 );
corners = cv.CreateImage( cv.GetSize(gray), 32, 1 );
#opencv.cvCvtColor( cvim, gray, opencv.CV_BGR2GRAY );
cv.CornerHarris(gray,corners,self.block_size,self.aperture_size,self.k)
buffer = corners.tostring()
corners = numpy.frombuffer(buffer,numpy.float32).reshape(corners.height,corners.width).transpose()
footprint = ones((3,3))
mx = maximum_filter(corners, footprint = footprint)
local_maxima = (corners == mx) * (corners != zeros(corners.shape)) # make sure to remove completly dark points
points = nonzero(local_maxima)
del local_maxima
points = array([points[0],points[1]]).transpose()
L = []
for each in points:
L.append((corners[each[0],each[1]],each[0],each[1],None))
return L
评论列表
文章目录