VS2013+CMake+OpenCV 環(huán)境搭建

0x00 - 應用目的

筆者使用OpenCV主要目的是暫時完成圖像的配準與融合苞七,所以主要用到OpenCVSURF忆肾、SIFT芜辕、ORB等工具,搭建時主要遇到的問題:

  • OpenCV3.0+依賴拆分函數(shù)遷移問題
  • CMake使用流程不熟悉
  • Python引入OpenCV不完整

0x01 - Python 默認安裝

使用Python時習慣使用pip對需要的包進行安裝簸喂,所以在初次配置OpenCV時直接執(zhí)行了下述命令:

pip install opencv-python

安裝完成后可以正常引入cv2并完成圖像讀取顯示毙死,但無法使用特征提取函數(shù)燎潮,使用時報錯:

AttributeErrorTraceback (most recent call last)
<ipython-input-5-a409304a8e5d> in <module>()

----> 2 surf = cv2.xfeatures2d.SURF_create(300)

AttributeError: 'module' object has no attribute 'xfeatures2d'

產(chǎn)生該錯誤原因是OpenCV 3.0+中將部分功能分離成了一個新的庫:opencv-contrib喻鳄,SURFSIFT屬于擴展庫中的功能,而默認庫中則只包含了表現(xiàn)更好的ORB确封。

0x02 - OpenCV Contrib 安裝

按照廣大網(wǎng)友指示應先卸載opencv-python后重新安裝opencv-contrib-python除呵,即

pip uninstall opencv-python
pip install opencv-contrib-python  # Permission denied 的話可以加上 --user

不知道大家嘗試結(jié)果如何,反正我是失敗了:依然無法使用SURF_create

0x03 - CMake 重新編譯

pip安裝依賴形式添加OpenCV外爪喘,直接從OpenCV官網(wǎng)上下載源碼也可以完成依賴添加:

  • 下載已編譯好的源碼并解壓(官網(wǎng)提供exe運行本質(zhì)也是解壓)
  • 解壓目錄/opencv/build/python/2.7/x64下可以找到cv2.pyd文件
  • cv2.pyd拷貝至$PYTHON_HOME/Lib/site-packages目錄下即可

當然這樣拷貝出的和pip安裝的區(qū)別不大颜曾,以同樣方法將binlib添加進VS工程也會出現(xiàn)無法找到nonfreelegacy的問題,想要解決只能使用CMake重新編譯OpenCV(C++的話順路還能加上Nonfree)秉剑。

0x04 - 重新編譯OpenCV

準備工具:

  • OpenCV + OpenCV Contrib(此處使用Git-master-2018/9/19)
  • CMake 3.12.2
  • Virtual Studio 2013

編譯流程:

  1. 打開CMake/bin/cmake-gui.exe泛豪,選擇源文件路徑及輸出路徑(可新建)
  2. 執(zhí)行左下方Configure,選擇對應版本編譯工具(此處選擇了Virtual Studio 12 2013 Win64)
  3. 重復執(zhí)行Configure直到結(jié)束后沒有被標記為紅色的選項
  4. 搜索PATH侦鹏,在OPENCV_EXTRA_MODULES_PATH項中填入opencv-contribmodules路徑
    (如需Nonfree支持可搜索OPENCV_ENABLE_NONFREE選項并勾選)
  5. 重復執(zhí)行Configure直到結(jié)束后沒有被標記為紅色的選項
  6. 執(zhí)行左下方Generate
  7. 完成CMake部分編譯
配置樣例

此時的輸出路徑中是沒有我們需要的依賴文件的诡曙!無法配置路徑或者拷貝cv2.pyd并不是編譯失敗...我們還需要進入VS2013中進行正式的編譯:

  1. 打開輸出路徑中的OpenCV.sln,設(shè)置ALL_BUILD為啟動項(默認)
  2. 選擇對應版本(如 Release x64)
  3. 編譯生成解決方案(或直接運行)

VS2013中完成編譯后才可以重新配置路徑或拷貝cv2.pyd略水,配置完成后重新運行腳本价卤,功能順利實現(xiàn)。


0xFF - About ORB

ORB: Oriented FAST and Rotated BRIEF, An efficient alternative to SIFT and SURF and NOT PATENTED.

ORB is basically a fusion of FAST keypoint detector and BRIEF descriptor with many modifications to enhance the performance. First it use FAST to find keypoints, then apply Harris corner measure to find top N points among them. It also use pyramid to produce multiscale-features. But one problem is that, FAST doesn’t compute the orientation. So what about rotation invariance? Authors came up with following modification. [Get all theory here]

ORB in OpenCV :

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('simple.jpg',0)

# Initiate STAR detector
orb = cv2.ORB()

# find the keypoints with ORB
kp = orb.detect(img,None)

# compute the descriptors with ORB
kp, des = orb.compute(img, kp)

# draw only keypoints location,not size and orientation
img2 = cv2.drawKeypoints(img,kp,color=(0,255,0), flags=0)
plt.imshow(img2),plt.show()
Result

Additional Resources:
Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571.


我們的822渊涝,我們的青春
歡迎所有熱愛知識熱愛生活的朋友和822實驗室一起成長慎璧,吃喝玩樂,享受知識跨释。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胸私,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鳖谈,更是在濱河造成了極大的恐慌盖文,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚯姆,死亡現(xiàn)場離奇詭異五续,居然都是意外死亡,警方通過查閱死者的電腦和手機龄恋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門疙驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郭毕,你說我怎么就攤上這事它碎。” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵扳肛,是天一觀的道長傻挂。 經(jīng)常有香客問我,道長挖息,這世上最難降的妖魔是什么金拒? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮套腹,結(jié)果婚禮上绪抛,老公的妹妹穿的比我還像新娘。我一直安慰自己电禀,他們只是感情好幢码,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尖飞,像睡著了一般症副。 火紅的嫁衣襯著肌膚如雪调塌。 梳的紋絲不亂的頭發(fā)上偶芍,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音款筑,去河邊找鬼腋么。 笑死咕娄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的珊擂。 我是一名探鬼主播圣勒,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摧扇!你這毒婦竟也來了圣贸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤扛稽,失蹤者是張志新(化名)和其女友劉穎吁峻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體在张,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡用含,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帮匾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啄骇。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘟斜,靈堂內(nèi)的尸體忽然破棺而出缸夹,到底是詐尸還是另有隱情痪寻,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布虽惭,位于F島的核電站橡类,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芽唇。R本人自食惡果不足惜顾画,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望披摄。 院中可真熱鬧亲雪,春花似錦勇凭、人聲如沸疚膊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寓盗。三九已至,卻和暖如春璧函,著一層夾襖步出監(jiān)牢的瞬間傀蚌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工蘸吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留善炫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓库继,卻偏偏與公主長得像箩艺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宪萄,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容