2011-10-30 27 views
0

在Windows上嘗試使用OpenCV進行人臉檢測時,我需要拉入幾乎所有庫(2d,3d,ml,gui等)。否則我的程序將無法運行。我不確定爲什麼我需要任何GUI來實現像對象檢測一樣的算法。什麼是需要的最小的一組庫,是否有一種特殊的方法來構建OpenCV,使得沒有那麼多的依賴關係?什麼是在OpenCV中人臉檢測的基本庫的最小集合

回答

0

您需要opencv_core才能獲取cv :: Mat,opencv_imgproc等基礎對象以使用閾值,直方圖和其他圖像預處理,以及opencv_highgui來讀取,寫入和顯示圖像,以及使用來自攝像機和視頻文件的視頻流。這就是我不知道如何在Windows上運行openCV並且不知道您正在使用哪個版本的openCV的情況。據我所知,沒有辦法構建openCV的某些部分。

通常根據我的經驗,您只需添加與您正在使用的標題相關聯的庫。所以,如果你在跟蹤他們時遇到問題,儘量避免使用#include "opencv2/opencv.hpp"並嘗試一下#include "opencv2/core/core.hpp"等難點。

+0

您是否有一些在不使用highgui庫中的API的情況下將圖像讀寫到磁盤的示例?我想使用核心,2d等OpenCV API的其餘部分,但我不希望依賴於highgui庫,因爲我想從這個庫中獲得的所有圖像都是在整個Win32 API世界中拖動的圖像文件處理。 –

+0

我不明白你寫了什麼。如果您想要避免使用win32 API,那麼highgui是非常好的選擇,因爲它可以爲您可以運行OpenCV的任何系統提供單一API。我只使用二進制fstream來保存一些OpenCV數據,而不使用它們的本機機制,所以我不認爲有任何可顯示的東西。 – morynicz

+0

我在說的是,我不想在我的應用程序中使用任何GUI,並且使用highgui進行圖像讀/寫操作時會不必要地引入幾個我在應用程序中不需要的Win32依賴項。 –

0

是的,你可以構建OpenCV而不需要某些庫的特性。 OpenCV使用CMake,如果您不知道它,需要一點點學習,但是您可以取消選中CMake構建配置中不需要的OpenCV組件。

如果您可以使用其他庫(但不確定是否可以在沒有它的情況下構建OpenCV)讀取圖像,則不必在應用程序中使用highgui即可離開。

另外 - 您將需要#include "opencv2/objdetect/objdetect.hpp"支持哈爾級聯分類器(從OpenCV 2.3.1開始)。