オッサンはDesktopが好き

自作PCや機械学習、自転車のことを脈絡無く書きます

UbuntuでC++版OpenCVを使う

 自分用のメモ.ここ*1を参考に

公式*2からver. 4.6.0のソースをダウンロード

Sourcesをクリック

$ cd ~/Downloads
$ unzip opencv-4.6.0.zip -d ~/
$ cd ~/opencv-4.6.0
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .
$ make -j4
$ sudo make install
$ sudo ldconfig
$ cd ..
$ sudo rm -r opencv-4.6.0

使うときはtasks.jsonにargsを追加

tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                ...
                "-I/usr/local/include/opencv4",
                "-L/usr/lib/lib",
                "-lopencv_core",
                ...

何かエラーになる.別ver.とぶつかっているっぽい

/usr/bin/ld: warning: libopencv_core.so.406, needed by /usr/local/lib/libopencv_imgcodecs.so, may conflict with libopencv_core.so.4.2
/usr/bin/ld: /tmp/ccS6898k.o: undefined reference to symbol '_ZN2cv3MatC1Ev'
/usr/bin/ld: /usr/local/lib/libopencv_core.so.406: error adding symbols: DSO missing from command line

aptで入れていたっぽい

4.2なんてどこにも存在しないのだが...

手動で消す

sudo apt --purge remove libopencv-dev python3-opencv
sudo apt --purge remove libopencv-core-dev
sudo apt autoremove

これで動いた. 効いたのは2行目っぽい

以上