程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Harris特征檢測(python實現)

編輯:Python

文章目錄

    • 1.Opencv特征的場景
    • 2.特征
    • 3.Harris特征檢測
    • 4.哈裡斯(Harris)角點特征性質
    • 5.函數講解
    • 6.代碼實戰

1.Opencv特征的場景

(1)圖像搜索:以圖搜索;
(2)拼圖游戲;
(3)圖像拼接:將兩張有關聯的圖拼接在一起;


2.特征

圖像特征就是指有意義的圖像區域,具有獨特性,易識別性,比如角點,斑點以及高密度區域。
角點:在特征中最重要就是角點;灰度梯度的最大值對應的像素;兩條線的交點;極值點(一階導數最大,二階導數為0)


3.Harris特征檢測


第一幅圖矩形表示一個平坦區域,在各方向移動,窗口內像素值沒有變化;
第二幅圖矩形表示一個邊緣特征(Edges),如果沿著垂直方向移動(梯度方向),像素值會發生改變;如果沿著邊緣移動(平行於邊緣) ,像素值不會發生變化;
第三幅圖矩形框來說,它是一個角(Corners),不管你把它朝哪個方向移動,像素值都會發生很大變化。


4.哈裡斯(Harris)角點特征性質

該算法算子對亮度和對比度的變化不敏感。
算子具有旋轉不變性。
算子不具有尺度不變性。


5.函數講解

cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)
Src:輸入的原始圖像;
Blocksize:檢測窗口的大小
Ksize:卷Sobel積核的大小;
K:權重系數,經驗值,一般取0.02-0.04之間。
Dst:輸出的圖像
borderType:⽤於推斷圖像外部像素的某種邊界模式,有默認值BORDER_DEFAULT.


6.代碼實戰

import os
import cv2
#讀取圖片
img=cv2.imread('images/HaLiSi.jpg')
#縮放圖片
img=cv2.resize(src=img,dsize=(450,450))
#轉灰度圖
gray=cv2.cvtColor(src=img,code=cv2.COLOR_RGB2GRAY)
#哈裡斯檢測
halisi=cv2.cornerHarris(src=gray,blockSize=2,ksize=3,k=0.03)
#判斷角點的“質量”
img[halisi>0.01*halisi.max()]=[0,255,0]
#顯示圖像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved