您好,登錄后才能下訂單哦!
這篇文章主要介紹了C++ OpenCV特征提取之如何實現亞像素級角點檢測,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
前言
前面我們學習了Harris角點檢測還有Shi-Tomasi角點檢測等,如果我們要對有點的精度有更高的要求,就需要用到了亞像素級角點檢測。其實在實際應用中可以看到,幾乎所有的角點不會是一個真正的準確像素點。比如說我們得到的角點是(80,20),但是實際上是(80.223,20.789)。
亞像素定位方法
插值方法
基說圖像矩計算
曲線擬合方法 -(高斯曲面、多項式、橢圓曲面)
在OpenCV中已經為我們提供了一個亞像素定位取值的函數了。
相關API
C++: void cornerSubPix(
InputArray image, --輸入圖像
InputOutputArray corners, --初始輸入坐標和角坐標
Size winSize, --一半的側長度搜索值
Size zeroZone, --一半區域在搜索區域中的求和公式。
TermCriteria criteria --標準終止迭代處理的隅角細化
)
代碼演示
我們再新建一個項目名為opencv--corner,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
首先我們還是用到了TrackBar
所以先定義TrackBar的參數
然后在代碼中創建TrackBar
接下來就是我們最關鍵的函數SubPixel_Demo
顯示效果
可以看到紅色是我們原來用SHi-Toamsi角點檢測出來的點,藍色是用的亞像素檢測出來的點會有小小的偏差,說明亞像素的點更精確一些,再看看命令行輸出的我們的點的坐標,大部分都是帶有小數的
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++ OpenCV特征提取之如何實現亞像素級角點檢測”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。