關於編譯opencv contrib的一些總結

2021-08-19 14:00:44 字數 1125 閱讀 5316

首先說下我的程式設計環境: win10(64)位+vs2017+opencv3.3.1dubug(opencv2.4.9)

提到opencv2.4.9的原因:opencv2.4.9為十分經典的版本,如果在多次編譯opencv_contrib未果的情況下,不妨可以退回到opencv2.4.9,實測在上述環境下,opencv2.4.9可以完美執行。

關於在opencv3.3.1dubug的環境下編譯opencv_contrib的總結:

(1)在編譯的期間,來來回回配置了好幾次的opencv3.3.1,開始我的附加的依賴項為opencv_world331d.lib和opencv_world331.lib,後來在dubug的時候,發現在載入各種dll的時候,速度奇慢無比,後來在刪除opencv_world331.lib後,速度就很快了。

(3) opencv3.3.1中surffeaturedetector、surfdescriptorextractor、bruteforcematcher這三個的使用方法已經和原先2.4版本前不一樣了。

使用方法示例如下:

ptrdetector = surf::create(minhessian);

detector->detect(img_1, keypoints_1);

ptrextractor = surf::create();

extractor->compute(img_1, keypoints_1, descriptors_1);

ptrmatcher = descriptormatcher::create("bruteforce");

matcher->match(descriptors_1, descriptors_2, matches);

引用自(4)最後附上配置好的環境下,進行surf檢測的**

#include #include #include using namespace std;

using namespace cv;

using namespace xfeatures2d; //在opencv3中,一定要先宣告xfeatures2d這個命名空間

int main()

關於在編寫**時的一些注意事項,已經在**的注釋中標明。

關於編譯指令

自定義條件識別符號 define 下面例子中自定義了條件識別符號 bbbbb 識別符號和定義它的指令都不區分大小寫,但大家一般慣用大寫.begin showmessage 識別符號 bbbbb 已定義 showmessage 識別符號 bbbbb 未定義 end 測試預定義的 debug 和 rel...

關於靜態編譯

出現以下錯誤的解決方案 nafxcw.lib afxmem.obj error lnk2005 void cdecl operator new unsigned int 2 yapaxi z already defined in libcmt.lib new.obj nafxcw.lib afxme...

關於交叉編譯

關於交叉編譯 交叉編譯通俗地講就是在一種平台上編譯出能執行在體系結構不同的另一種平台上,比 如在我們地pc平台 x86 cpu 上編譯出能執行在sparc cpu平台上的程式,編譯得到的程式在x86 cpu平台上是不能執行的,必須放到sparc cpu平台上才能執行。當然兩個平台用的都是linux ...