计算机视觉-OpenCV(六)

一、图像特征-harris角点检测

平、边界、角点

函数:
cv2.cornerHarris()
    img:数据类型为float32的图像
    blockSize:角点检测中指定区域大小
    ksize:Sobel求导使用的窗口大小
    k:取值参数为[0.06,0.04]

import cv2
import numpy as np

img = cv2.imread('car.jpg')
print('img.shape',img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04)
print(dst.shape)

#dst相当于变化程度,变成程度大于最大值的0.1时,标红
img[dst>0.1*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

二、SIFT算法(尺度不变特征变换)

2.1 图像尺度空间
在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然而计算机要有相同的能力却很难,所以要让计算机能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同尺度下都存在的特点。
(高斯模糊)不同的参数决定图像的平滑程度,越大的参数对应的图像越模糊
    2.1.1多分辨率图像金字塔
    2.1.2高斯差分金字塔(选出有价值的点)
2.2 极值点检测(比较每个点周围8个点,上下层18个点,共26个点。结果是离散的,需对各点进行拟合,计算极值点)
2.3 消除边界相应
2.4 特征点的主方向
2.5 生成特征描述

import cv2
import numpy as np

img = cv2.imread('car.jpg')
#print('img.shape',img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#实例化SIFT
sift=cv2.SIFT_create()
#得到关键点
kp=sift.detect(gray,None)
#绘制关键点函数:drawKeypoints
img=cv2.drawKeypoints(gray,kp,img)
cv2.imshow('drawKeypoints',img)
cv2.waitKey(0)
cv2.destroyAllWindows()


#计算特征,返回值kp:关键点,des特征
kp,des=sift.compute(gray,kp)
#查看有多少个关键点,kp是list格式,转换成array计算
print(np.array(kp).shape) #(1368,)
des.shape #(1368, 128) 128维向量
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值