优化哈里斯角

简介: 【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() #显示检测结果

相关文章
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
266 1
|
7月前
|
存储
优化哈里斯角
优化哈里斯角。
31 4
|
6月前
|
算法 Python
哈里斯角检测
【6月更文挑战第5天】哈里斯角检测。
67 3
|
7月前
|
Python
优化哈里斯角例子
优化哈里斯角例子。
31 2
|
6月前
|
知识图谱 C++
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
442 0
|
算法
算法提高:计算几何基础 | 详解凸包问题
点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上,或者在其内
184 0
算法提高:计算几何基础 | 详解凸包问题
【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)
【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)
101 0
|
机器学习/深度学习 传感器 算法
基于 Ekman 方程求解大气边界层中的水平均匀流和高度相关的涡流粘度附matlab代码
基于 Ekman 方程求解大气边界层中的水平均匀流和高度相关的涡流粘度附matlab代码
|
算法
坚持写算法题的第四周(一)
坚持写算法题的第四周(一)
116 0
坚持写算法题的第四周(一)