优化哈里斯角

简介: 【6月更文挑战第5天】优化哈里斯角。

使用cv2.cornerHarris()函数检测出的角称为哈里斯角,它包含了一定数量的像素。有时,可能需要对哈里斯角进行进一步处理,找出角的更精确位置。
cv2.cornerSubPix()函数用于对哈里斯角进行优化,找出更准确的角的位置,其基本格式如下。
dst=cv2.cornerSubPix(src,corners, winSize, zeroZone, criteria)
参数说明如下。
 dst为返回结果,存储优化后的角信息。
 src为8位单通道或浮点值图像。
 corners为哈里斯角的质心坐标。
 winSize为搜索窗口边长的一半。
 zeroZone为零值边长的一半。
 criteria为优化查找的终止条件。
示例代码如下。

优化哈里斯角

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('cube.jpg') #打开图像,默认为BGR格式
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像
gray = np.float32(gray) #转换为浮点类型
dst = cv2.cornerHarris(gray,8,7,0.04) #查找哈里斯角
r, dst = cv2.threshold(dst,0.01*dst.max(),255,0) #二值化阈值处理
dst = np.uint8(dst) #转换为整型
r,l,s,cxys = cv2.connectedComponentsWithStats(dst) #查找质点坐标
cif = (cv2.TERM_CRITERIA_EPS +
cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001) #定义优化查找条件
corners = cv2.cornerSubPix(gray,
np.float32(cxys),(5,5),(-1,-1),cif) #执行优化查找
res = np.hstack((cxys,corners)) #堆叠构造新数组,便于标注角
res = np.int0(res) #转换为整型
img[res[:,1],res[:,0]]=[0,0,255] #将哈里斯角对应像素设置为红色
img[res[:,3],res[:,2]] = [0,255,0] #将优化结果像素设置为绿色
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #转换为RGB格式
plt.imshow(img)
plt.axis('off')
plt.show() #显示检测结果

相关文章
|
2月前
|
存储
优化哈里斯角
优化哈里斯角。
18 4
|
27天前
|
算法 Python
哈里斯角检测
【6月更文挑战第5天】哈里斯角检测。
12 3
|
6天前
技术心得:曲率计算公式推导
技术心得:曲率计算公式推导
|
2月前
|
Python
优化哈里斯角例子
优化哈里斯角例子。
15 2
|
11月前
|
算法 计算机视觉
基于凸多边形最大化的高光谱端体提取算法(Matlab代码实现)
基于凸多边形最大化的高光谱端体提取算法(Matlab代码实现)
|
2月前
|
文件存储
AvaSpec-ULS2048光谱仪测定地物高光谱曲线的方法
AvaSpec-ULS2048光谱仪测定地物高光谱曲线的方法
|
11月前
|
机器学习/深度学习 传感器 算法
融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)-附matlab代码
融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)-附matlab代码
|
11月前
【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)
【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)
|
11月前
|
算法
用于二维和三维声学设计灵敏度分析的奇异边界法(Matlab代码实现)
用于二维和三维声学设计灵敏度分析的奇异边界法(Matlab代码实现)
|
12月前
|
算法 Serverless
基本粒子群算法及惯性权重分析
粒子群算法(particle swarm optimization,PSO)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有效的策略就是搜寻当前距离食物最近的鸟的周围区域。PSO算法是从这种生物种群行为特征中得到启发并用于求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。