news 2026/8/6 11:17:11

cv2.cornerHarris() 详解(Harris 角点检测)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cv2.cornerHarris() 详解(Harris 角点检测)

cv2.cornerHarris() 详解(Harris 角点检测)

cv2.cornerHarris() 是 OpenCV 中实现Harris 角点检测的核心函数,用于检测图像中的角点(角点定义:图像中在两个正交方向上灰度变化都很大的像素点,如物体边缘的交点)。以下是完整的使用指南、参数解析、实战示例和避坑技巧:

一、核心原理

Harris 角点检测通过计算像素点的自相关矩阵,分析该点邻域内的灰度变化:
若两个方向的灰度变化都大 → 角点;
仅一个方向变化大 → 边缘;
无明显变化 → 平坦区域。最终通过响应值(R)判断是否为角点:R > 阈值 则判定为角点。

二、函数语法与参数

dst = cv2.cornerHarris(src, blockSize, ksize, k)

完整使用步骤

# -*- coding:utf-8 -*-importcv2 as cvimportnumpy as npimportsysif__name__=='__main__':# 读取图像image=cv.imread('./images/test.jpg')ifimage is None: print('Failed to read test.jpg.')sys.exit()# 转为灰度图像gray=cv.cvtColor(image, cv.COLOR_BGR2GRAY)# 计算Harris系数harris=cv.cornerHarris(gray,2,3,0.04,borderType=cv.BORDER_DEFAULT)# 对Harris进行归一化便于进行数值比较harris_nor=cv.normalize(harris, None,alpha=0,beta=255,norm_type=cv.NORM_MINMAX)harris_nor=harris_nor.astype('uint8')# 寻找Harris角点kps=[]foriinnp.argwhere(harris_nor>125): kps.append(cv.KeyPoint(i[1], i[0],1))# 绘制角点result=cv.drawKeypoints(image, kps, None)# 展示结果cv.imshow('R', harris_nor)cv.imshow('Harris KeyPoints', result)cv.waitKey(0)cv.destroyAllWindows()

常见错误及解决

错误 1:输入图像类型错误

plaintext
error: (-215:Assertion failed) src.type() == CV_32F || src.type() == CV_8U
原因:输入图像不是单通道灰度图,或未转为浮点型;
解决:确保 src 是灰度图,且执行 gray = np.float32(gray)。

错误 2:角点标记无效果

原因:阈值过高,或 k 取值不合理;
解决:降低阈值(如 0.01dst.max() → 0.005dst.max()),调整 k 至 0.04~0.06。

错误 3:亚像素检测报错

plaintext
error: (-215:Assertion failed) src.size() == patternSize
原因:corners 格式错误(需是 (N,2) 的浮点数组);
解决:确保 corners = np.float32(corners[:, ::-1]) 转换坐标格式。

适用场景与局限性

总结

cv2.cornerHarris() 核心是调参 blockSize、ksize、k,需根据图像分辨率 / 噪声调整;
降噪(高斯模糊)是提升检测效果的关键前置步骤;
高精度场景需结合 cv2.cornerSubPix() 实现亚像素级检测;
对比 Shi-Tomasi 角点检测,Harris 更适合粗检测,Shi-Tomasi 速度更快、结果更稳定。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 9:48:22

一文说清ES6语法中的块级作用域实现原理

从引擎底层看懂 let 和 const &#xff1a;JavaScript 块级作用域的真正实现原理 你有没有遇到过这样的场景&#xff1f; for (var i 0; i < 3; i) {setTimeout(() > console.log(i), 100); } // 输出&#xff1a;3, 3, 3 —— 而不是预想中的 0, 1, 2这个经典的“…

作者头像 李华
网站建设 2026/8/6 6:11:17

LangFlow Foglight应用性能深度剖析

LangFlow 在智能监控系统中的应用潜力 在企业 IT 环境日益复杂的今天&#xff0c;应用性能监控&#xff08;APM&#xff09;系统不仅要处理海量指标数据&#xff0c;更要面对多源异构日志、模糊告警语义和根因定位困难等挑战。传统的规则驱动型分析方式已逐渐触及瓶颈——它们依…

作者头像 李华
网站建设 2026/8/5 11:26:26

LangFlow Opsview商业监控解决方案

LangFlow 与 Opsview&#xff1a;构建可观察的低代码 AI 应用运维体系 在企业加速拥抱大模型技术的今天&#xff0c;一个现实问题日益凸显&#xff1a;如何让非技术人员也能高效参与智能应用的设计&#xff0c;同时确保这些“黑盒”系统在生产环境中稳定、可控地运行&#xff1…

作者头像 李华
网站建设 2026/8/5 11:26:22

LangFlow Smartlook用户行为视频记录

LangFlow 与 Smartlook&#xff1a;可视化 AI 开发与用户行为洞察的融合实践 在 AI 应用快速迭代的今天&#xff0c;一个核心矛盾日益凸显&#xff1a;技术能力越强&#xff0c;使用门槛越高。LangChain 让开发者能轻松构建复杂的 LLM 工作流&#xff0c;但其 API 的复杂性也让…

作者头像 李华
网站建设 2026/8/6 7:56:55

LangFlow ServiceNow Performance Analytics

LangFlow ServiceNow Performance Analytics 在现代 IT 服务管理&#xff08;ITSM&#xff09;体系中&#xff0c;性能问题的响应速度与诊断精度直接决定着业务连续性。面对日益复杂的系统架构和海量监控数据&#xff0c;传统依赖人工经验的分析方式已难以为继。一个典型场景是…

作者头像 李华
网站建设 2026/8/6 5:15:33

LangFlow Contentsquare数字化体验优化

LangFlow 与数字化体验优化&#xff1a;让 AI 可视化落地 在用户体验分析领域&#xff0c;一个长期存在的挑战是&#xff1a;我们能清晰地看到“用户做了什么”——比如点击热图、页面停留时长、跳出路径&#xff0c;却很难快速理解“他们为什么这么做”。传统的 BI 工具擅长统…

作者头像 李华