Python中OpenCV图像特征和harris角点检测

目录
  • 概念
    • 第一步:计算一个梯度 Ix,Iy
    • 第二步:整合矩阵,计算特征值
    • 第三步:比较特征值的大小
    • 第四步: 非极大值抑制,把真正的角点留下来,角点周围的过滤掉
  • 代码实现

概念




第一步:计算一个梯度 Ix,Iy



第二步:整合矩阵,计算特征值

第三步:比较特征值的大小


第四步: 非极大值抑制,把真正的角点留下来,角点周围的过滤掉

代码实现

import cv2
import numpy as np

img =cv2.imread('pie.png')
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.shape)

img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()





到此这篇关于Python中OpenCV图像特征和harris角点检测的文章就介绍到这了,更多相关OpenCV-图像特征-harris角点检测内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-09-14

OpenCV特征提取与检测之Harris角点检测

目录 前言 1. 效果图 2. 原理 3. 源码 3.1 Harris角点检测 3.2 精细角点检测 总结 前言 这篇博客将了解什么是特征,角点,哈里斯角点检测(Harris Corner Detection)的概念.并使用cv2.cornerHarris(),cv2.cornerSubPix()实现哈里斯角点检测: 1. 效果图 原图 VS Harris角点检测效果图如下: 原图 VS Harris角点检测效果图如下: 惊细角点效果图如下:Harris角点用红色像素标记,精细角点用绿色像素标记

OpenCV哈里斯(Harris)角点检测的实现

环境 pip install opencv-python==3.4.2.16 pip install opencv-contrib-python==3.4.2.16 理论 克里斯·哈里斯(Chris Harris)和迈克·史蒂芬斯(Mike Stephens)在1988年的论文<组合式拐角和边缘检测器>中做了一次尝试找到这些拐角的尝试,所以现在将其称为哈里斯拐角检测器. 函数:cv2.cornerHarris(),cv2.cornerSubPix() 示例代码 import cv2 impor

opencv2基于SURF特征提取实现两张图像拼接融合

本文实例为大家分享了opencv2实现两张图像拼接融合的具体代码,供大家参考,具体内容如下 要用到两个文件,estimate.cpp和matcher.h(在有关鲁棒匹配这篇博文中有) estimate.cpp的头文件也需要添加一些东西才行,以下是对的,已经成功运行. 加了using namespace std;之后,cv::可以去掉了. estimate.cpp: #include <iostream> #include <vector> #include <opencv2/

Python使用Opencv实现图像特征检测与匹配的方法

特征检测是计算机对一张图像中最为明显的特征进行识别检测并将其勾画出来.大多数特征检测都会涉及图像的角点.边和斑点的识别.或者是物体的对称轴. 角点检测 是由Opencv的cornerHarris函数实现,其他函数参数说明如下: cv2.cornerHarris(src=gray, blockSize=9, ksize=23, k=0.04) # cornerHarris参数: # src - 数据类型为 float32 的输入图像. # blockSize - 角点检测中要考虑的领域大小. #

Android基于OpenCV实现Harris角点检测

目录 什么是角点? 为什么要检测角点? Harris角点检测 API 操作 效果 源码 什么是角点? 角点就是极值点,即在某方面属性特别突出的点.当然,你可以自己定义角点的属性(设置特定熵值进行角点检测).角点可以是两条线的交叉处,也可以是位于相邻的两个主要方向不同的事物上的点.角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界.常见的角点有: 灰度梯度的最大值对应的像素点: 两条直线或者曲线的交点: 一阶梯度的导数最大值和梯度方向变化率最大的像素点: 一阶

Python基于OpenCV实现视频的人脸检测

本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys import logging as log import datetime as dt from time import sleep cascPath = "haarcascade_frontalface_default.xml" faceCascade = cv2.CascadeCla

基于MFC和OpenCV实现角点检测

本文实例为大家分享了MFC和OpenCV实现角点检测的具体代码,供大家参考,具体内容如下 // 角点检测 // 根据<基于OpenCV的计算机视觉技术实现> #define max_corners 200; // 限定的最大角点数 IplImage* srcImage = 0; // 待处理的源图像 IplImage* ImageShow = 0; // 存储显示带角点的图像 IplImage* grayImage = 0; // 原始图像转换成的灰阶图像 IplImage* corners1

基于OpenCv的运动物体检测算法

基于一个实现的基于OpenCv的运动物体检测算法,可以用于检测行人或者其他运动物体. #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> int main( int argc, char** argv ) //声明IplImage指针 IplImage* pFrame = NULL; IplImage* pFrImg = NULL; IplImage* pBk

Python基于OpenCV实现人脸检测并保存

本文实例为大家分享了Python基于OpenCV实现人脸检测,并保存的具体代码,供大家参考,具体内容如下 安装opencv 如果安装了pip的话,Opencv的在windows的安装可以直接通过cmd命令pip install opencv-python(只需要主要模块),也可以输入命令pip install opencv-contrib-python(如果需要main模块和contrib模块) 详情可以点击此处 导入opencv import cv2 所有包都包含haarcascade文件.这

python基于opencv检测程序运行效率

这篇文章主要介绍了python基于opencv检测程序运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 涉及到的函数主要有两个: 1.cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数.所以当你在一个函数前后都调用它的话,你就会得到这个函数的执行时间(时钟数). 2.cv2.getTickFrequency()返回时钟频率,或者说每秒钟的时钟数. 所以你可以按照以下的方式得到一个函数运行了多少秒: # -*- c

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(推荐)

了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描二维码的功能,然后自己还很开心. 随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码

Android 基于百度语音的语音交互功能(推荐)

项目里面用到了语音唤醒功能,前面一直在用讯飞的语音识别,本来打算也是直接用讯飞的语音唤醒,但是讯飞的语音唤醒要收费,试用版只有35天有效期.只好改用百度语音,百度语音所有功能免费,功能也比较简单实用,包括语音识别,语音合成和语音唤醒,正好可以组成一套完整的语音交互功能. 效果图: 首先是语音唤醒功能,说出关键词即可叫语音识别,唤醒成功会有语音提示,这里采用了百度语音的合成功能.然后百度语音识别会根据wifi情况自动切换在线或者离线识别,但是离线识别只能识别已经导入的关键词,而且离线第一次识别需要

Android基于AlarmManager实现用户在线心跳功能示例

本文实例讲述了Android基于AlarmManager实现用户在线心跳功能.分享给大家供大家参考,具体如下: 在做即时通信或者其他检测是否在线等操作时要用到心跳.比较常用的是AlarmManager全局定时器 去实现. AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.其实它的作用和Timer有点相似.都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作 AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个

Python基于OpenCV库Adaboost实现人脸识别功能详解

本文实例讲述了Python基于OpenCV库Adaboost实现人脸识别功能.分享给大家供大家参考,具体如下: 以前用Matlab写神经网络的面部眼镜识别算法,研究算法逻辑,采集大量训练数据,迭代,计算各感知器的系数...相当之麻烦~而现在运用调用pythonOpenCV库Adaboost算法,无需知道算法逻辑,无需进行模型训练,人脸识别变得相当之简单了. 需要用到的库是opencv(open source computer vision),下载安装方式如下: 使用pip install num