前言web
前面咱們學習了《C++ OpenCV特徵提取之BFMatcher匹配》、《C++ OpenCV特徵提取之FLANN特徵匹配》都是特徵匹配的方法,針對平面對象的識別都是在前面這些方法的基礎上咱們再進一步進行處理就能夠實現。要實現這一步,咱們就要進行對象形變與位置變換。微信
對象形變與位置變換app
findHomography --發現兩個平面的透視變換,生成變換矩陣。學習
perspectiveTransform 透視變換編碼
上面兩個API應該在實際應用中會常常用到,是個使用率比較高的API
url
代碼演示
spa
咱們再新建一個項目名爲opencv--findobject,按照配置屬性(VS2017配置OpenCV通用屬性),而後在源文件寫入#include和main方法.net
而後咱們把前一節課FLANN的匹配方法都拷貝過來《C++ OpenCV特徵提取之FLANN特徵匹配》3d
還記得當時的運行效果吧orm
此次咱們換一張圖片,直接把大頭照顯示出來
在上次代碼結尾咱們開始編碼
首先從最坐匹配中找對應的點
生成透視變換的矩陣
定義兩張圖的角點,而後進行透視變換
在輸出圖像上進行畫線
上面的顯示圖像加上位置是由於咱們兩張圖片由於放在同一塊兒,因此須要有個數據的偏移計算。
顯示圖像
接下來咱們看一下運行的結果
能夠看到,咱們匹配到的圖像已經畫在上面了。
若是咱們直接在第二張圖上畫,能夠不用上面的畫線加上偏移量了
記得第一句先把灰度圖轉爲BGR彩色圖片,而後再畫紅線,要不畫出來的仍是黑色線。顯示結果爲:
-END-
長按下方二維碼關注微卡智享
本文分享自微信公衆號 - 微卡智享(VaccaeShare)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。