欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV哈里斯角檢測|Harris?Corner理論實踐

 更新時間:2023年04月13日 09:50:06   作者:uncle_ll  
這篇文章主要為大家介紹了OpenCV哈里斯角檢測|Harris?Corner理論實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

目標

在本章中,將學習

  • "Harris Corner Detection”背后的思想
  • 函數(shù):cv2.cornerHarris(),cv.2cornerSubPix()

理論

可以用如下圖來表示:

因此,Harris Corner Detection的結果是具有這些分數(shù)的灰度圖像。合適的閾值可提供圖像的各個角落。

OpenCV中的哈里斯角檢測

在OpenCV中有實現(xiàn)哈里斯角點檢測,cv2.cornerHarris()。其參數(shù)為:

dst = cv2.cornerHarris(src, blockSize, ksize, k[, dst[, borderType]] )

  • src - 輸入圖像,灰度和float32類型
  • blockSize - 是拐角檢測考慮的鄰域大小
  • ksize - 使用的Sobel導數(shù)的光圈參數(shù)
  • k- 等式中的哈里斯檢測器自由參數(shù)
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('chessboard.png')
img_copy = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
# result is dilated for marking the corners, not important
dst = cv2.dilate(dst, None)
# Threshold for an optimal value, it may vary depending on the image.
img[dst >0.01*dst.max()]=[255,0,0]
# plot
plt.subplot(121)
plt.imshow(img_copy, cmap='gray')
plt.xticks([])
plt.yticks([])
plt.subplot(122)
plt.imshow(img, cmap='gray')
plt.xticks([])
plt.yticks([])
plt.show()

以下是結果:

可以看到,各個角點已經標紅。

SubPixel精度的轉角

有時候可能需要找到最精確的角點。OpenCV附帶了一個函數(shù)cv2.cornerSubPix(),它進一步細化了以亞像素精度檢測到的角點。下面是一個例子。

  • 和之前一樣,首先需要先找到哈里斯角點
  • 然后通過這些角的質心(可能在一個角上有一堆像素,取它們的質心)來細化它們
  • Harris角用紅色像素標記,SubPixel角用綠色像素標記

對于cv2.cornerSubPix()函數(shù),必須定義停止迭代的條件。我們可以在特定的迭代次數(shù)或達到一定的精度后停止它。此外,還需要定義它將搜索角點的鄰居的大小。

corners = cv.cornerSubPix( image, corners, winSize, zeroZone, criteria )

  • image: 輸入圖像,單通道
  • corners: 輸入的初始坐標和為輸出提供的精制坐標
  • winSize: 搜索窗口的一半側面長度
  • zeroZone: 搜索區(qū)域中間的死區(qū)大小的一半在下面的公式中的求和,有時用于避免自相關矩陣的可能奇點。(−1,−1)(-1,-1)(−1,−1) 的值表示沒有這樣的尺寸
  • criteria: 終止角點細化過程的條件
# sub pixel更精度角點
import cv2
import numpy as np
img = cv2.imread('chessboard2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# find Harris corners
dst = cv2.cornerHarris(gray,2, 3, 0.04)
dst = cv2.dilate(dst, None)
ret, dst = cv2.threshold(dst, 0.01*dst.max(), 255,0)
dst = np.uint8(dst)
# find centroids
ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)
# define the criteria to stop and refine the corners
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001)
corners = cv2.cornerSubPix(gray, np.float32(centroids), (5, 5), (-1, -1), criteria)
# Now draw them
res = np.hstack((centroids,corners))
res = np.int0(res)
img[res[:,1],res[:,0]]=[0,0,255]
img[res[:,3],res[:,2]] = [0,255,0]
cv2.imshow('subpixel', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

以下是結果, 可以看到SubPixel更精確一點:

附加資源

docs.opencv.org/4.1.2/dd/d1…

docs.opencv.org/4.1.2/dd/d1…

docs.opencv.org/4.1.2/dd/d1…

docs.opencv.org/4.1.2/d4/d8…

docs.opencv.org/4.1.2/dd/d1…

以上就是OpenCV哈里斯角檢測|Harris Corner理論實踐的詳細內容,更多關于OpenCV哈里斯角檢測的資料請關注腳本之家其它相關文章!

相關文章

  • matplotlib圖例legend語法及設置的方法

    matplotlib圖例legend語法及設置的方法

    這篇文章主要介紹了matplotlib圖例legend語法及設置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 解決Jupyter notebook中.py與.ipynb文件的import問題

    解決Jupyter notebook中.py與.ipynb文件的import問題

    這篇文章主要介紹了解決Jupyter notebook中.py與.ipynb文件的import問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 迭代,for...in遍歷,迭代原理與應用示例

    Python 迭代,for...in遍歷,迭代原理與應用示例

    這篇文章主要介紹了Python 迭代,for...in遍歷,迭代原理與應用,結合實例形式分析了Python迭代與遍歷的相關操作技巧與使用注意事項,需要的朋友可以參考下
    2019-10-10
  • Python中的time模塊和calendar模塊

    Python中的time模塊和calendar模塊

    這篇文章主要介紹了Python中的time模塊和calendar模塊,在Python中對時間和日期的處理方式有很多,其中轉換日期是最常見的一個功能。Python中的時間間隔是以秒為單位的浮點小數(shù)。下面來看看文章具體內容的介紹,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • 一文詳解Python加解壓文件gzip庫的操作

    一文詳解Python加解壓文件gzip庫的操作

    Gzip是若干種文件壓縮程序的簡稱,通常指GNU計劃的實現(xiàn)。本文為大家介紹了Python中加解壓文件gzip庫的基本操作,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python3實現(xiàn)購物車功能

    Python3實現(xiàn)購物車功能

    這篇文章主要為大家詳細介紹了Python3實現(xiàn)購物車功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python pymsql模塊的使用

    Python pymsql模塊的使用

    這篇文章主要介紹了Python pymsql模塊的使用,幫助大家我們利用 python 語言與 mysql 進行鏈接,感興趣的朋友可以了解下
    2020-09-09
  • Python max內置函數(shù)詳細介紹

    Python max內置函數(shù)詳細介紹

    這篇文章主要介紹了Python MAX內置函數(shù)詳細介紹的相關資料,需要的朋友可以參考下
    2016-11-11
  • Python中sys模塊常用方法與變量實例探究

    Python中sys模塊常用方法與變量實例探究

    sys?模塊是 Python 標準庫中的一個核心模塊,提供了與解釋器進行交互的功能,了解?sys?模塊的方法和變量對于更有效地管理和調試 Python 程序至關重要,本文將深入探討?sys?模塊的常用方法和變量,通過詳細的示例代碼,幫助大家更全面地了解并靈活運用這一關鍵模塊
    2024-01-01
  • Python Flask框架開發(fā)之運用SocketIO實現(xiàn)WebSSH方法詳解

    Python Flask框架開發(fā)之運用SocketIO實現(xiàn)WebSSH方法詳解

    Socket.IO本是一個面向實時web應用的JavaScript庫,現(xiàn)在已成為擁有眾多語言支持的Web即時通訊應用的框架。這篇文章主要介紹了Python 運用SocketIO實現(xiàn)WebSSH方法
    2022-10-10

最新評論