harris位_OpenCV中Harris角点的Python检测与定位

本文介绍了一个尝试检测图像中线段角点的Python代码,利用OpenCV的cv2.cornerHarris()函数进行角点检测。在代码中,通过调整阈值和图像处理来寻找拐点,但发现实际热点与检测结果不匹配。同时探讨了cv2.goodFeaturesToTrack()函数作为替代方案,但未成功使Harris角点检测工作。
摘要由CSDN通过智能技术生成

我正在使用以下代码尝试检测多段线的角点,以便“测量”这些线。代码基于我在on SO找到的一个片段,基于cv2.cornerHarris():cornerimg = cv2.cornerHarris( gray, # src

2, # blockSize

3, # ksize / aperture

0.04 # k

# dst

# borderType

)

# ?

cornerimg = cv2.normalize( cornerimg, # src

None, # dst

0, # alpha

255, # beta

cv2.NORM_MINMAX, # norm type

cv2.CV_32FC1, # dtype

None # mask

)

# ?

cornerimg = cv2.convertScaleAbs( cornerimg )

cornershow = cornerimg.copy()

# iterate over pixels to get corner positions

w, h = gray.shape

for y in range(0, h):

for x in range (0, w):

#harris = cv2.cv.Get2D( cv2.cv.fromarray(cornerimg), y, x)

#if harris[0] > 10e-06:

if cornerimg[x,y] > 64:

print("corner at ", x, y)

cv2.circle( cornershow, # dest

(x,y), # pos

4, # radius

(115,0,25) # color

)

cv2.imshow('harris cornerimg', cornershow)

原始代码会在拐角位置产生白点,而水平线似乎是“拐角”的指示器。

片段(更新为使用cv2)在结果图像上迭代并扫描大于10e-06的值,出于某种原因,我将其替换为比较图像中的亮度。

然而,在这些位置绘制的圆与标准化harris输出中发现的实际热点相去甚远。

我做错什么了?

或者,可以将cv2.goodFeaturesToTrack()设置为使用Harris(useHarrisDetector=True),但我尝试使用它并没有导致cornerHarris正确检测到:cv2.goodFeaturesToTrack( blurred, # img

500, # maxCorners

0.03, # qualityLevel

10, # minDistance

None, # corners,

None, # mask,

2, # blockSize,

useHarrisDetector=True, # useHarrisDetector,

k=0.04 # k

)

对cv2.cornerHarris()的等价函数调用是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值