上一個教程: 使用 gcc 和 CMake 進行 OpenCV 開發
下一個教程: 在 Windows 中安裝
| |
| 原始作者 | Ana Huamán |
| 相容性 | OpenCV >= 3.0 |
- 警告
- 本教程可能包含過時的資訊。
前提條件
兩種方式,一種是直接建立專案,另一種是透過 CMake
- 已安裝 Eclipse 在您的工作站上(只需要 C/C++ 的 CDT 外掛)。您可以按照以下步驟操作
- 已安裝 OpenCV。 如果還沒有,請點選這裡。
建立專案
- 啟動 Eclipse。 只需執行該資料夾中的可執行檔案即可。
- 轉到 File -> New -> C/C++ Project
- 為您的專案選擇一個名稱(例如 DisplayImage)。 對於此示例,Empty Project 應該可以。
- 保留其他所有預設設定。 按 Finish。
- 您的專案(在本例中為 DisplayImage)應出現在 Project Navigator 中(通常在視窗的左側)。
- 現在,讓我們新增一個使用 OpenCV 的原始檔
- 右鍵單擊 DisplayImage(在導航器中)。 New -> Folder 。
- 將您的資料夾命名為 src,然後點選 Finish
- 右鍵單擊您新建立的 src 資料夾。 選擇 New source file
- 將其命名為 DisplayImage.cpp。 點選 Finish
- 所以,現在您有了一個帶有空的 .cpp 檔案的專案。 讓我們用一些示例程式碼填充它(換句話說,複製並貼上下面的程式碼片段)
#include <opencv2/opencv.hpp>
int main(
int argc,
char** argv )
{
image = imread( argv[1], IMREAD_COLOR );
if( argc != 2 || !image.
data )
{
printf( "No image data \n" );
return -1;
}
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0;
}
uchar * data
指向資料的指標
定義 mat.hpp:2167
int main(int argc, char *argv[])
定義 highgui_qt.cpp:3
- 我們只缺少最後一個步驟:告訴 OpenCV OpenCV 標頭檔案和庫的位置。 為此,請執行以下操作
- 轉到 Project–>Properties
- 在 C/C++ Build 中,單擊 Settings。 在右側,選擇 Tool Settings 選項卡。 在這裡我們將輸入標頭檔案和庫資訊
- 在 GCC C++ Compiler 中,轉到 Includes。 在 Include paths(-l) 中,您應該包含 opencv 安裝的資料夾的路徑。 在我們的示例中,它是 /usr/local/include/opencv。
- 注意
- 如果您不知道您的 opencv 檔案在哪裡,請開啟 Terminal 並輸入
pkg-config --cflags opencv
例如,該命令給了我這個輸出-I/usr/local/include/opencv -I/usr/local/include
現在轉到 GCC C++ Linker,您必須填寫兩個空格
首先在 Library search path (-L) 中,您必須寫入 opencv 庫所在的路徑,在我的例子中,路徑是:
/usr/local/lib
然後在 Libraries(-l) 中新增您可能需要的 OpenCV 庫。 通常只需列表中的前 4 個就足夠了(對於簡單的應用程式)。 在我的例子中,我把它們都放進去,因為我計劃使用整個集合
opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_ml opencv_videoio opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_flann
如果您不知道您的庫在哪裡(或者您只是精神病患者並想確保路徑正確),請在 Terminal 中輸入
我的輸出(如果您想檢查)是
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann
現在您已完成。 點選 OK
如果您在資料夾中檢查,那裡應該有一個可執行檔案。
執行可執行檔案
所以,現在我們有一個準備執行的可執行檔案。 如果我們要使用終端,我們可能會做類似的事情
cd <DisplayImage_directory>
cd src
./DisplayImage ../images/HappyLittleFish.png
假設用作引數的影像位於 <DisplayImage_directory>/images/HappyLittleFish.png 中。 我們仍然可以這樣做,但讓我們從 Eclipse 中進行
- 轉到 Run->Run Configurations
- 在 C/C++ Application 下,您將看到您的可執行檔案的名稱 + Debug(如果沒有,請多次單擊 C/C++ Application)。 選擇名稱(在本例中為 DisplayImage Debug)。
- 現在,在視窗的右側,選擇 Arguments 選項卡。 寫入我們要開啟的影像檔案的路徑(路徑相對於 workspace/DisplayImage 資料夾)。 讓我們使用 HappyLittleFish.png
- 單擊 Apply 按鈕,然後單擊 Run。 應該會彈出一個帶有魚影像的 OpenCV 視窗(或者您使用的任何影像)。
- 恭喜! 您已準備好使用 Eclipse 來享受 OpenCV 的樂趣。
V2: 在 Eclipse (外掛 CDT) 中使用 CMake+OpenCV
假設您有一個或建立一個新檔案,helloworld.cpp,位於名為 foo 的目錄中
#include <opencv2/opencv.hpp>
int main (
int argc,
char **argv )
{
putText(img,
"Hello World!",
Point( 200, 400 ), FONT_HERSHEY_SIMPLEX | FONT_ITALIC, 1.0,
Scalar( 255, 255, 0 ));
imshow("My Window", img);
cv::Mat::empty
return 0;
}
- 建立一個構建目錄,例如,在 foo 下:mkdir /build。 然後 cd build。
- 在 build 中放置一個
CmakeLists.txt 檔案PROJECT( helloworld_proj )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( helloworld helloworld.cxx )
TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} )
- 執行:cmake-gui .. 並確保您填寫了 OpenCV 的構建位置。
- 然後單擊 configure,然後單擊 generate。 如果沒問題,退出 cmake-gui
- 執行
make -j4(-j4 是可選的,它只是告訴編譯器以 4 個執行緒構建)。 確保它可以構建。
- 啟動 eclipse。 將工作空間放在某個目錄中,但不要放在 foo 或
foo\build 中
- 在 Project Explorer 部分中右鍵單擊。 選擇 Import,然後開啟 C/C++ 過濾器。 選擇 Existing Code 作為 Makefile Project。
- 命名您的專案,例如 helloworld。 瀏覽到 Existing Code 位置
foo\build(您從中執行 cmake-gui 的位置)。 在 "Toolchain for Indexer Settings" 中選擇 Linux GCC,然後按 Finish。
- 在 Project Explorer 部分中右鍵單擊。 選擇 Properties。 在 C/C++ Build 下,將 build directory: 從類似
${workspace_loc:/helloworld} 的內容設定為 ${workspace_loc:/helloworld}/build,因為這是您要構建到的位置。
- 您也可以選擇修改 Build command:從 make 到類似
make VERBOSE=1 -j4 的內容,這會告訴編譯器生成詳細的符號檔案以進行除錯,並且還以 4 個並行執行緒進行編譯。
- 完成!