私はアンドロイド NDK と OpenCV (バージョン 2.4.1) を使用しています。私がやろうとしているのは、opencv をライブラリとして使用する Android アプリケーションのプロファイルを作成することです (また、opencv に呼び出される関数のプロファイルも作成します)。
すべての環境 (Android NDK、SDK、openCV、および Android 用の openCV) をセットアップしましたが、明らかに opencv をプロファイリングすることはできません。
私はこの2つの方法を試しました:
1 - C フラグ -pg を追加して openCV ライブラリを再コンパイルします。
オプション -pg を入れようとしましたが、ここで提案されているように、非互換性のエラーが発生します。オプション -DENABLE_PROFILING=ON -DOPENCV_LINKER_LIBS=/full/path/to/libandprof.a を入れてこのエラーを修正しますが、次のエラーが発生します。
[ 0%] C オブジェクトのビルド 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_aux.co
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 からインクルードされたファイル: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:56:エラー: 'size_t' の前に宣言指定子または '...' が必要です
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:56: エラー: 'size_t' の前に宣言指定子または '...' が必要です
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:60 からインクルードされたファイルでは、/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 から: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:67: エラー: 'tmsize_t' の前に'='、','、';'、'asm' または ' attribute ' が予想されます
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:77: エラー: 'tsize_t' の前に'='、','、';'、'asm' または ' attribute ' が必要です
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:60 からインクルードされたファイルでは、/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 から: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275: エラー: 予想される宣言指定子または「...」が「*」トークンの前にある
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275: エラー: 'tmsize_t' の前に宣言指定子または '...' が必要です
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275: 警告: 'tmsize_t' の宣言では型のデフォルトが 'int' になります
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275: エラー: 'tmsize_t' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:348: エラー: 'TIFFScanlineSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:350: エラー: 'TIFFRasterScanlineSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:352: エラー: 'TIFFStripSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:354: エラー: 'TIFFRawStripSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:356: エラー: 'TIFFVStripSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:358: エラー: 'TIFFTileRowSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:360: エラー: 'TIFFTileSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:362: エラー: 'TIFFVTileSize' が関数を返す関数として宣言されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:376: エラー: '='、','、';'、'asm' または ' attribute ' が 'TIFFGetReadProc' の前にあると予想されました
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:377: エラー: '='、','、';'、'asm' または '属性が必要です' 'TIFFGetWriteProc' の前 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:434: エラー: 予想される宣言指定子または '...' 'TIFFReadWriteProc' の前に /home/bacci/librerie/ OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:434: エラー: 'TIFFReadWriteProc' /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio の前に宣言指定子または '...' が必要です。 h:452: エラー: 'TIFFReadTile' が関数を返す関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:453: エラー: 'TIFFWriteTile' が関数を返す関数として宣言されました / home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:456: エラー: 'TIFFReadEncodedStrip' が関数を返す関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/ tiffio.h:457: エラー: 'TIFFReadRawStrip' は、関数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:458 を返す関数として宣言されました: エラー: 'TIFFReadEncodedTile' は、関数 /home/bacci/librerie/OpenCV を返す関数として宣言されました-2.4.1/3rdparty/libtiff/tiffio.h:459: エラー: 'TIFFReadRawTile' が関数を返す関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:460: エラー: 関数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:461 を返す関数として宣言された 'TIFFWriteEncodedStrip': エラー: 関数 /home/bacci/librerie を返す関数として宣言された 'TIFFWriteRawStrip' /OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:462: エラー: 'TIFFWriteEncodedTile' が関数を返す関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:463 : エラー: '関数を返す関数として TIFFWriteRawTile を宣言 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 からインクルードされたファイル: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/ libtiff/tiffiop.h:148: エラー: フィールド 'tif_tilesize' が関数として宣言されました関数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:172: エラー: フィールド 'tif_scanlineskew' が関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff /tiffiop.h:174: エラー: フィールド 'tif_rawdatasize' が関数として宣言されました/home/bacci/librerie/OpenCV-2.4.1/サードパーティ/libtiff/tiffiop.h:176:エラー: 関数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:178 として宣言されたフィールド 'tif_rawdataloaded': エラー: 関数 /home/bacci/librerie/ として宣言されたフィールド 'tif_rawcc' OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:181: エラー: フィールド 'tif_size' が関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:186: エラー: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:33 からインクルードされたファイル内の 'TIFFReadWriteProc' の前に指定子修飾子リストが必要です: /home/bacci/librerie/OpenCV-2.4.1 /3rdparty/libtiff/tif_predict.h:40: エラー: フィールド 'stride' が関数として宣言されました /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_predict.h:41: エラー: フィールド 'rowsize'関数として宣言 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:関数 '_TIFFCheckRealloc': /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:67: エラー: 関数 'bytes' は変数 /home/bacci/librerie/OpenCV-2.4 のように初期化されています.1/3rdparty/libtiff/tif_aux.c:67: エラー: バイナリへのオペランドが無効です * ('int ()()' および 'int ( )()') /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:72: エラー: バイナリへの無効なオペランド / ('int ( )(を持っている) )' および 'int ()()') /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:67: エラー: ネストされた関数 'bytes' が宣言されていますが、/home/bacci/librerie/OpenCV-2.4 が定義されていません。 1/3rdparty/libtiff/tif_aux.c: 関数 'TIFFDefaultTransferFunction' 内: /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:101: エラー: キャストが関数タイプ /home/bacci/ を指定していますlibrerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:102: エラー: バイナリへのオペランドが無効です * ('int (*)()' と 'unsigned int' があります) /home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c:106: エラー: 割り当て /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:106: エラー: 左辺値が必要ですインクリメント オペランドとして /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:107: エラー:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:107: エラー: 浮動小数点値が予期される場所でポインター値が使用されました /home/bacci/ librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108: エラー: 配列の添字が整数ではありません /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c: 関数内 ' TIFFDefaultRefBlackWhite': /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137: 警告: '_TIFFmalloc' の引数 1 を渡すと、キャストなしで整数からポインターが作成されます /home/bacci/librerie/OpenCV -2.4.1/3rdparty/libtiff/tiffio.h:295: 注: 'int (*)()' が必要ですが、引数の型は 'unsigned int' です/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108: エラー: 配列の添え字が整数ではありません /home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c: 関数 'TIFFDefaultRefBlackWhite': /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137: 警告: '_TIFFmalloc' の引数 1 を渡しています/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295: 注: 'int (*)()' が期待されますが、引数の型は 'unsigned int' です/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108: エラー: 配列の添え字が整数ではありません /home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c: 関数 'TIFFDefaultRefBlackWhite': /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137: 警告: '_TIFFmalloc' の引数 1 を渡しています/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295: 注: 'int (*)()' が期待されますが、引数の型は 'unsigned int' です1/3rdparty/libtiff/tif_aux.c:137: 警告: '_TIFFmalloc' の引数 1 を渡すと、キャストなしで整数からポインターが作成されます /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 : 注: 'int (*)()' が必要ですが、引数の型は 'unsigned int' です1/3rdparty/libtiff/tif_aux.c:137: 警告: '_TIFFmalloc' の引数 1 を渡すと、キャストなしで整数からポインターが作成されます /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 : 注: 'int (*)()' が必要ですが、引数の型は 'unsigned int' です
make[2]: * [サードパーティ/libtiff/CMakeFiles/libtiff.dir/tif_aux.co] エラー 1
make 1 : * [サードパーティ/libtiff/CMakeFiles/libtiff.dir/all] エラー 2
make: * [すべて] エラー 2
`
2 - 私の c++ Android アプリケーション (extern C) に openCV のソース コードの一部を統合してみてください。
ただし、すべてのopencvソースをjniフォルダーのアプリに統合していないため、プログラムのすべての呼び出しで実際のツリーを取得できないため、これは良い解決策ではありません。
誰かがこの問題を解決するために私に手を差し伸べることができますか??
ありがとうございました