NVIDIA TX 2でg++でcuda版OpenCV程度のピットをコンパイル

1468 ワード

まずTX 2の下にcuda版のOpenCVをインストールします.
そして、OpenCVで書かれたC++プログラムをg++でコンパイルすると、たくさんの間違いが報告されます.次に、解決方法について説明します.
(一)「/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:error:『NppiGraphcutState』......」が山積みになります.
これは上記の位置のgraphcutを修正しなければなりません.cpp,将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) 
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
cuda版OpenCVのコンパイルでは、他の2つのエラーにも言及していますが、私は遭遇していないようです.
(二)そしてまだたくさんある
「『cv::imread(std:::_cxx 11::basic_string,std::char_traits,std::allocator>const&,int)』未定義」のerror--わあimreadもない!
解決策は、g++でコンパイルする際に`pkg-config opencv--cflags--libs opencv`、すなわち:
g++ main.cpp -o main‘pkg-config opencv --cflags --libs opencv’
にもいくつかのブログが書かれています.
g++ main.cpp -o main‘pkg-config --cflags --libs opencv’
または
g++ main.cpp‘pkg-config opencv --cflags --libs opencv’ -o main

(3)「-lopencv_cudev」が見つからない場合もあるかもしれませんが、/usr/libの下にはすでに対応する.soファイルがあるのに、/usr/local/libの下に対応する.soファイルに再リンクしても役に立たない.この移植心酸路が言ったためかもしれません.
しかし、このエラーは时には消えて、コンパイルすることができます...
最後に-L/usr/local/libを追加しただけで解決しました.
g++ main.cpp -o main‘pkg-config opencv --cflags --libs opencv’ -L/usr/local/lib
注意:pkg-configの前の点は、単引用符ではなくESCの下のキーです!
(四)しかし、直接端末に上記のコマンドを入力すると、有効である場合もあれば、無効である場合もある.それを.shに書き、./実行である場合も有効である場合もあり、無効である場合もある..shに書いてbashで実行すると毎回成功し、分からない.