day6 角点检测

1.Harris角点检测

# coding=utf-8
import cv2
import numpy as np

filename = ‘pic5.png‘

#1.读入一个灰度图像
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow(‘gray‘,gray)

#2.执行角点检测函数
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)   #函数 cv2.cornerHarris() 可以用来进行角点检测
            #数据类型为 float32 的输入图像
                            # 2:角点检测中要考虑的领域大小
                               #3: Sobel 求导中使用的窗口大小
                                 #Harris 角点检测方程中的自由参数,取值参数为 [0,04,0.06]

dst = cv2.dilate(dst,None)   #扩大标记角
img[dst>0.01*dst.max()] = [0,0,255]  #阈值为一个最佳值,它可能会根据图像而变化。

cv2.imshow(‘dst‘,img)

cv2.waitKey(0)
cv2.destroyAllWindows()

2.Shi-Tomasi角点检测&适合跟踪的图像特征

    

# coding=utf-8

import cv2
import numpy as np
from matplotlib import pyplot as plt

#1.读入图像,灰度
filename = ‘pic5.png‘
filename2 = ‘woman.JPEG‘

img = cv2.imread(filename2)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#2.执行角点函数 cv2.goodFeaturesToTrack
corners = cv2.goodFeaturesToTrack(gray,50,0.01,10)
                                    #50个最佳点
                                        #0.01 角点的质量水平,0到 1 之间
    # 返回的结果是 [[ 311., 250.]] 两层括号的数组。

corners = np.int0(corners)

#3.在img标记角点
for i in corners:
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,255,-1)

plt.imshow(img)
plt.show()

    

时间: 2024-11-13 06:42:51

day6 角点检测的相关文章

Harris角点检测原理及实现

一.原理 二.实现 close all; clear all; I=imread('test.tif'); [posX,posY]=harris(I); figure;imshow(I); hold on; plot(posX, posY, 'g*'); function [posX,posY]=harris(I) %Harris角点检测 %I:输入图像 %posX:角点X坐标 %posY:角点Y坐标 I=double(I); [m,n]=size(I); hx=[-1,0,1;-1,0,1;-

opencv对图像进行边缘及角点检测

opencv对图像进行边缘及角点检测 先看结果: 代码: // ConsoleApplication1_812.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "opencv2/opencv.hpp" class Imagedetector{ public: Imagedetector():threshold(-1) ,cross(5

使用nodeitk进行角点检测

前言 东莞,晴,33至27度.今天天气真好,学生陆续离开学校.忙完学生答辩事情,终于可以更新一下nodeitk.本文继续介绍node的特征识别相关内容,你会看到,采用nodeitk实现角点检测是一件十分简单的事情. 本文你将学到使用nodeitk进行角点检测: 1.        特征包含有哪些?为什么它们这么重要 2.        使用函数cornerHarris,利用Harris-Stephens方法检测角点 理论 什么是特征? 1.        在机器视觉中,通常我们在一个环境下的不同

SUSAN角点检测

close all; clear all; I=imread('corner2.gif'); [posX,posY]=susan(I,3); figure; imshow(I);hold on; plot(posX,posY,'g*'); function [posX,posY]=susan(I,radius) %SUSAN角点检测 %I:输入图像 %radius:圆形模板的半径 %(posX,posY):角点坐标 [r,c]=size(I); mask=generatemask(radius)

角点检测方法

看了将近十来天的OPENCV了,无论是从官方文档,还是learning opencv,还是看各论坛,心里总有种感觉是:无法把自己看的知识联系在一起,感觉都是各有特色功能的函数,可是这些各有特色功能的函数怎么组合在一起,实现什么样的功能就不得而知了. 下面从角点的角度来讲讲吧  --(要说的是有些并非是本人所写,觉得别人有的地方写的经典就复制下来了) 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点: 我们到底要角点干什么?????????????? 下面我来回

OpenCV中feature2D学习——亚像素级角点检测(cornerSubPix)

概述 除了利用Harris进行角点检测和利用Shi-Tomasi方法进行角点检测外,还可以使用cornerEigenValsAndVecs()函数和cornerMinEigenVal()函数自定义角点检测函数.如果对角点的精度有更高的要求,可以用cornerSubPix()函数将角点定位到子像素,从而取得亚像素级别的角点检测效果. cornerSubPix()函数 (1)函数原型 cornerSubPix()函数在角点检测中精确化角点位置,其函数原型如下: C++: void cornerSub

Harris角点检测学习

1.角点的定义与性质 角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点.检测得到的角点特征通常用于图像匹配.目标跟踪.运动估计等方面. 2.Harris角点 1)定性描述 该算法中,将图像分为平坦区域.边缘.角点三部分.平坦区域中像素灰度在各个方向上变换都很小,边缘上的像素灰度在某个方向变化很大,但是在另一些方向变化很小:位于角点上的像素灰度则在各个方向上的变化都比较大.这是通过人眼观察得到的直观感受. 2)量化的数学表达 不同

OpenCV使用Harris算法实现角点检测

纯粹阅读,请移步OpenCV使用Harris算法实现角点检测 效果图 源码 KqwOpenCVFeaturesDemo 角点是两条边缘的交点或者在局部邻域中有多个显著边缘方向的点.Harris角点检测是一种在角点检测中最常见的技术. Harris角点检测器在图像上使用滑动窗口计算亮度的变化. 封装 这里用到了RxJava.主要是因为图片处理是耗时操作,会阻塞线程,为了防止界面卡顿,这里使用RxJava进行了线程切换. /** * Harris角点检测 * * @param bitmap 要检测的

第22集 Moravec角点检测

步骤1:算出0,45,90,135四个方向上变化的最小值的平方,并且记录在结果图像中 步骤2:求结果图像的局部最大值,并且和阀值对比,大于阀值的保存该点的坐标位置:cvCreateMemStorage ,cvCreateSeq ,cvSeqPush 步骤3:读取角点的坐标,并且在图像上画出:cvGetSeqElem,cvCircle 程序: #include "cv.h" #include "cxcore.h" #include "highgui.h&qu