数)13doublek14doublemaxStre
gth角点响应函数最大值15doublethreshold阈值除去响应小的值16i
t
o
MaxSize这里采用默认的3,就是最大值抑制的邻域窗口大小17cvMatker
el最大值抑制的核,这里也就是膨胀用到的核18public19harris
eighbourhood3aperture3k001maxStre
gth00threshold001
o
MaxSize320
f212223voidsetLocalMaxWi
dowsizei
t
o
MaxSize24this
o
MaxSize
o
MaxSize252627计算角点响应函数以及非最大值抑制28voiddetectco
stcvMatimage29ope
cv自带的角点响应函数计算函数30cvcor
erHarrisimagecor
erStre
gth
eighbourhoodaperturek31doublemi
Stre
gth32计算最大最小响应值33cvmi
MaxLoccor
erStre
gthmi
Stre
gthmaxStre
gth3435cvMatdilated36默认33核膨胀,膨胀之后,除了局部最大值点和原来相同,其它非局部最大值点被3733邻域内的最大值点取代38cvdilatecor
erStre
gthdilatedcvMat39与原图相比,只剩下和原图值相同的点,这些点都是局部最大值点,保存到localMax40cvcomparecor
erStre
gthdilatedlocalMaxcvCMP_EQ414243获取角点图44cvMatgetCor
erMapdoublequalityLevel45cvMatcor
erMap46根据角点响应最大值计算阈值47thresholdqualityLevelmaxStre
gth48cvthresholdcor
erStre
gthcor
erTh49threshold255cvTHRESH_BINARY50转为8bit图51cor
erThco
vertTocor
erMapCV_8U52和局部最大值图与,剩下角点局部最大值图,即:完成非最大值抑制53cvbitwise_a
dcor
erMaplocalMaxcor
erMap54retur
cor
erMap555657voidgetCor
ersstdvectorcvPoi
tpoi
ts58doublequalityLevel59获取角点图60cvMatcor
erMapgetCor
erMapqualityLevel61获取角点62getCor
erspoi
tscor
erMap63
f6465遍历全图,获得角点66voidgetCor
ersstdvectorcvPoi
tpoi
ts67co
stcvMatcor
erMap6869fori
ty0ycor
erMaprowsy70co
stucharrowPtrcor
erMapptruchary71fori
tx0xcor
erMapcolsx72非零点就是角点73ifrowPtrx74poi
tspush_backcvPoi
txy757677787980用圈圈标记角点81voiddrawO
ImagecvMatimage82co
ststdvectorcvPoi
tpoi
ts83cvScalarcolorcvScalar25525525584i
tradius3i
tthick
ess285stdvectorcvPoi
tco
st_iteratoritpoi
tsbegi
86whileitpoi
tse
d87角点处画圈88cvcircleimageitradiuscolorthick
ess89it909192939495e
difHARRIS_H测试代码:cppviewplai
copypri
t1cvMatimageimage1cvimread