8

Ubuntu 12.04 で openCV を適切にリンクするのにイライラするほど長い時間を費やし、学んだことを他の人の利益のために共有しようと考えました。

OpenCV は、Ubuntu リポジトリで次のように利用できるようになりました。

sudo apt-get install libopencv-dev

これは素晴らしいことですが、このバージョンの opencv ではライブラリの命名規則が異なると思います (間違っていたら訂正してください)。主な違いは、C++ ではインクルード行を読み取る必要があることです。

#include "opencv2/opencv.hpp"

これにより、コードはオブジェクトにコンパイルされますが、リンクされません。もう 1 つの違いは、静的ライブラリの名前もlibcv* から libopencv*変更されたことです。たとえば、バイナリは次の場所にあります。

/usr/lib/libopencv_core.so
/usr/lib/libopencv_highgui.so
.
.
.

これを修正するには、コンパイラ コマンドを

g++ main.cpp -lopencv_core -lopencv_highgui ...

またはCMakeで

target_link_libraries(main opencv_core opencv_highgui ...)

これが役立つことを願っています。私より詳しい人がいたら、ここで何が起こっているのか知りたいです。

-マイク

4

1 に答える 1

6

個人的には、「pkg-config」を使用してコンパイル フラグを取得しています。

g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main

メインの例:

#include <stdio.h>
#include <cv.h>

int main(void)
{
    printf("%s\r\n", CV_VERSION);
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION);
}
于 2015-10-20T19:58:05.063 に答える