3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

序論

ボンジュールお姫様お殿様、マドモアゼル、ギークの皆様。久しぶりに投稿いたします。
今日はOpenCVにcontributeするぜ!と思ったときにunit test実行で引っかかった人向けの記事です。

背景

OpenCVにcontributeしようとすると、unit testを作ることを要求されます。まあ当然ですね。
その場合、自動で走るCIで行うテストではなく、事前に手元でunit testを実行したほうが速く開発できますね。
しかし、単純にopencvをビルドしただけの場合、build/bin/opencv_test_* を実行すると、大抵の場合大量のエラーがでます。
これについては正式documentには何も書かれていません。
そこで、ネットで色々検索して実行したのですが、情報が散らばっており、これでできる!というものが見当たらなかったのでここでまとめておきます。
そもそもopencvにcontributeしようとする人が少ないから情報も少ないのかもしれませんね。

単純にunit testを実行した際のエラーメッセージ

例えばbuild/bin/opencv_test_imgproc を単純に実行した際のエラーは下記のようなものです。

/opencv_test_imgproc実行時のエラーメッセージ

[ FAILED ] Imgproc_Canny.accuracy (23 ms)
[ RUN ] Imgproc_Canny.accuracy_deriv
[ WARN:0@9.352] global /home/hoge/opencv/modules/imgcodecs/src/loadsave.cpp (239) findDecoder imread_('shared/fruits.png'): can't open/read file: check file path/integrity
/home/hoge/opencv/modules/ts/src/ts.cpp:618: Failure
Failed

failure reason: cvError invoked
test case #0
seed: ffffffffffffffff

LOG:

Canny(size = 1 x 42, aperture_size = 5, threshold1 = 685.923, threshold2 = 160.56, L2 = TRUE) test_cpp = FALSE (test case #0)
OpenCV Error:
Assertion failed (!ssize.empty()) in resize, file /home/hoge/opencv/modules/imgproc/src/resize.cpp, line 4052
OpenCV Error:
Assertion failed (!ssize.empty()) in resize, file /home/hoge/opencv/modules/imgproc/src/resize.cpp, line 4052

エラーの原因

上記エラーの原因は、エラーメッセージに "can't open/read file" とあるとおり、データが無いからです。
OpenCVのunit testを行うのには、sampleの実行に必要なデータに加えて、追加のデータが必要です。
また、それがみえるようにする環境変数の設定も必要です。
具体的な解決法を以下にまとめます。

OpenCVのunit testの動かし方

  1. opencv_extraのpull
    はじめにopencvをpullしておき、pullしたopencvのdirectoryと同じ階層(並列)にopencv_extraを以下のようにpullします。
    git pull git@github.com:opencv/opencv_extra.git

  2. opencvのbuild
    OpenCVのbuild時、cmakeに、以下のようにOPENCV_TEST_DATA_PATH optionをいれます。
    下記で、${ROOTDIR}は自分がopencvを配置した上のdirectoryです。
    cmake -D OPENCV_EXTRA_MODULES_PATH=${ROOTDIR}/opencv_contrib/modules \ -D OPENCV_TEST_DATA_PATH=${ROOTDIR}/opencv_extra/testdata \ -D BUILD_TESTS=ON -D BUILD_PERF_TESTS=ON \ -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=Debug \ ${ROOTDIR}/opencv

  3. 環境変数の設定
    export OPENCV_TEST_DATA_PATH=${ROOTDIR}/opencv_extra/testdata/

  4. unit testの実行
    あとは通常通りunit testのバイナリを実行するだけです。
    build/bin/opencv_test_imgproc

まとめ

以上、opencvのunit testの手動での実行方法でした。
次回は、見えそうで見えない、スカートでの座り方について書きたいと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?