日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用SIFT匹配金馆长表情包

發布時間:2024/7/23 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用SIFT匹配金馆长表情包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python使用opencv計算SIFT特征點的示例

  • 前言
  • 潛在的問題記錄
  • demo1:計算并繪制特征點
  • demo2:使用SIFT匹配兩幅圖像
  • 參考文章地址

前言

SIFT(Scale-invariant feature transform)是2004年提出的,至今已經經受住各種考驗,被證實是在同類描述子中具有很強健壯性的算法。
SIFT既是一種特征點檢測算法,也同時提供特征點的描述子。

本文使用兩個示例,簡單介紹在python下如何使用opencv計算SIFT特征點

完整代碼及更多算法demo,見我最近開始構建的 AI ToolBox

我建立 AI ToolBox 的初衷是,將工作學習中編寫的代碼中可復用的部分總結起來,組成一個工具箱,提高工作中嘗試算法的時間成本。希望也能對大家有用,我會持續的進行更新

下面進入正題

潛在的問題記錄

由于SIFT及SURF等特征點檢測算法已經申請專利,其算法實習是獨立于opencv之外的

因此,(假設你已經安裝了opencv)你在搜索網上教程嘗試使用SIFT算法時,你可能遇到下面的問題

’module’ object has no attribute 'xfeatures2d’

這是由于你沒有安裝 opencv-contrib-python 庫導致的,解決方法:

pip install opencv-contrib-python

但愿程序已正常運行,但是,取決于你的各種版本配置,你還可能遇到這樣的問題:

…Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::create’

在 stackflow 上可以找到該問題的若干解決辦法

由于我猜測這是和版本相關的問題,我是用如下方法解決的,很簡單。

先卸載 opencv 和 opencv-contrib-python, 再重新安裝統一版本的兩個庫。依此輸入如下命令:

pip uninstall opencv-python pip uninstall opencv-contrib-python pip install opencv-python==3.3.0.10 pip install opencv-contrib-python==3.3.0.10

demo1:計算并繪制特征點

我們先來簡單感受一下SIFT在做什么

調用很簡單:

使用detectAndCompute方法檢測特征點

使用drawKeypoints將特征點繪制處理

# -*- coding: utf-8 -*- """ Created on Thu Nov 8 15:34:41 2018SIFT特征點檢測demo1 計算SIFT特征點并繪制于圖像中@author: zyb_as """import cv2# 1) 以灰度圖的形式讀入圖片 psd_img_1 = cv2.imread('jgz1.jpg', cv2.IMREAD_GRAYSCALE)# 2) SIFT特征計算 # 初始化detector sift = cv2.xfeatures2d.SIFT_create() # 檢測特征點 psd_kp1, psd_des1 = sift.detectAndCompute(psd_img_1, None)# 3) 繪制特征點 #畫出特征點 im_keypoint = cv2.drawKeypoints(psd_img_1, psd_kp1, psd_img_1, flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow('image', im_keypoint)#展示圖片 cv2.waitKey(0)#等待按鍵按下 cv2.destroyAllWindows()#清除所有窗口

結果如下:

demo2:使用SIFT匹配兩幅圖像

我們可以用SIFT點做些什么呢?

最常見的應用有圖像拼接、模板匹配等

在demo2中,我們假設這樣的應用場景: 已有一張人臉模板,在另一幅圖像中,嘗試判斷其中是否包含這個人的臉。

核心思路是:

1)使用SIFT分別檢測圖片和模板的特征點

2)對兩組特征點進行KNN匹配

3)使用RANSAC剔除誤匹配的點對

4)通過最后留下的配對成功的點對的數量,通過一個閾值,判斷圖像中是否出現了模板人臉對應的同一個人

這里我們對前兩部進行實現練習:

代碼詳見AI ToolBox中的sift_demo2.py

看下效果:


可以看到,強大的SIFT描述子可以很好的匹配出兩幅圖中的同一個人,即使是像金館長這種已經被做成表情包的例子,都可以匹配成功。
同時,對于不是同一個人的情況,即使都是人(都有同樣人類的面部結構),SIFT也能夠進行很好的區分。

參考文章地址

David G.Lowe Distinctive Image Features from Scale-Invariant Keypoints. January 5, 2004.

Python-opencv3 SIFT算法做特征匹配

Python進行SIFT圖像對準

SIFT算法詳解

SIFT detector and descriptor

總結

以上是生活随笔為你收集整理的使用SIFT匹配金馆长表情包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。