2
1

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 3 years have passed since last update.

rs_bag2imageを使う(Ubuntu18.04 pyenvの環境で)

Posted at

bagファイルから画像ファイルを作成することができるツールであるrs_bag2imageを使えるようにする。
基本的に下の公式サイトに書かれている環境を作成する。
https://github.com/UnaNancyOwen/rs_bag2image
私の環境では既にGCCのバージョンとCMakeのバージョンは適切であるため今回はRealSense2 SDKとOpenCVのインストールを行う。

環境

・Ubuntu 18.04
・pyenv (python3系とpython2系の環境)

手順

  1. IntelRealsense2SDKのインストール
  2. OpenCVのインストール
  3. rs_bag2imageを使う

IntelRealsense2SDKのインストール

以下のサイトの手順に従ってgitからダウンロードしたソースコードをもとに環境構築を行う。
http://www1.meijo-u.ac.jp/~kohara/cms/technicalreport/ubuntu1804_realsense

1.インストールのための準備

$ sudo apt install libssl-dev libusb-1.1.0-dev pkg-config libgtk3-dev pkg-config libglfw3-dev libgl1-mesa-libglu1-mesa-devdev

2.RealSense2 SDKのソースからのビルド
homeディレクトリ直下のgithubというディレクトリ内にソースのダウンロードを行う。

$ cd
$ cd github
$ git clone https://github.com/IntelRealSense/librealsense
$ cd librealsense
$ mkdir build & cd build
$ cmake .. -DBUILD_EXAMPLES=true
$ make
$ sudo make install
$ sudo ldconfig

3.動作確認
realsenseカメラを接続した後、以下のコマンドによりveiwerが立ち上がり、映像が確認できるれば成功

$ realsense-viewer

OpenCVのインストール

githubからダウンロードしたソースコードをもとに環境を構築する。
以下のサイトの手順をもとに行った。
https://qiita.com/tetsu_koba/items/7487fc5fa258f683122b

1.準備

$ sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

2.ソースコードのダウンロード

$ git clone https://github.com/Itseez/opencv.git
$ git clone https://github.com/Itseez/opencv_contrib.git

エラーに対する対処
ビルドする際に以下の2つのエラーがはっせいしたため、その解決を行う。
・ModuleNotFoundError: No module named ‘_ctypes’でcmakeが失敗する。
・cmakeを実行した際にpython3の環境へOpenCVがインストールされない。

ModuleNotFoundError: No module named ‘_ctypes’でcmakeが失敗する。
以下のサイトを参考にした。
https://katsuwosashimi.com/archives/371/python-pip-uwsgi-ctypes-not-found/

以下のコマンドでlibffiをインストールした後にpythonを再度インストールすることで解決することができる。

$ sudo apt install libffi-dev

cmakeを実行した際にpython3の環境へOpenCVがインストールされない。

以下のサイトを参考にした。
https://qiita.com/shinsumicco/items/4dd5c6a6cccf246da818

pyenvでPython環境をインストールする際にshared libraryを導入することでOpenCVのビルド時に参照できるようにする。
pyenv install時に以下の環境変数を設定してインストールを行う。

$ CONFIGURE_OPTS="--enable-shared" pyenv install <version_to_install>

CMake時のパス設定

私の環境ではpyenvの環境が以下のようになっているため

$ pyenv versions

  system
* 3.6.7 (set by /home/houjou/.pyenv/version)

次のようにCMake時のオプションの設定を行った。

$ cd opencv
$ mkdir build
$ cd build/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/houjou/shunsk_ws/workspace/opencv_contrib/modules -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXECUTABLE=/home/houjou/.pyenv/versions/3.6.7/bin/python -D PYTHON3_PACKAGES_PATH=/home/houjou/.pyenv/versions/3.6.7/lib/python3.6/site-packages -D PYTHON3_INCLUDE_DIR=/home/houjou/.pyenv/versions/3.6.7/include/python3.6m -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/houjou/.local/lib/python3.6/site-packages/numpy/core/include -D PYTHON3_LIBRARY=/home/houjou/.pyenv/versions/3.6.7/lib/libpython3.6m.so -D WITH_CUBLAS=OFF -D OpenBLAS_FOUND=OFF INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON  -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_TESTS=OFF ..

これらのオプションを設定することで指定したPython環境にインストールすることができる。
参考にしたサイト通りにパスの設定をコマンドによって記述しても良いが、私はそれでエラーが起きたため絶対パスをそのまま記述した。
CMake後の出力は以下のようになった。

-- 
--   Python 3:
--     Interpreter:               /home/username/.pyenv/versions/3.6.7/bin/python (ver 3.6.7)
--     Libraries:                   /home/username/.pyenv/versions/3.6.7/lib/libpython3.6m.so (ver 3.6.7)
--     numpy:                       /home/username/.local/lib/python3.6/site-packages/numpy/core/include (ver 1.18.2)
--     install path:                /home/username/.pyenv/versions/3.6.7/lib/python3.6/site-packages/cv2/python-3.6
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
--

3.ビルド&インストール
エラーの対処時にCMakeを実行した後は、buildディレクトリの中で以下の通りに進める。

$ make -j4
$ sudo make install

-jの後の数字はプロセッサのコア数によって変更する。
以下のコマンドでプロセッサのコア数を確認することができる。

$ nproc

OpenCVがインストールされたかどうかは以下のコマンドでバージョンが表示されれば成功です。

$ python -c "import cv2; print(cv2.__version__)"

4.3.0-dev

rs_bag2imageを使う

1.ソースコードのダウンロード
githubからソースコードをダウンロードする。

$ git clone https://github.com/UnaNancyOwen/rs_bag2image.git

2.ビルド
ビルドして実行ファイルを作成する。

$ cd rs_bag2image/rs_bag2image/
$ mkdir build
$ cd build/
$ cmake ..
$ make

make実行時に私の環境では以下のエラーが発生した。

[ 33%] Building CXX object CMakeFiles/rs_bag2image.dir/realsense.cpp.o
/home/usrname/my_workspace/src/rs_bag2image/rs_bag2image/realsense.cpp: In member function ‘void RealSense::updateInfrared()’:
/home/usrname/my_workspace/src/rs_bag2image/rs_bag2image/realsense.cpp:246:14: error: ‘class rs2::frameset’ has no member named ‘foreach’; did you mean ‘foreach_rs’?
     frameset.foreach( [this]( const rs2::frame& frame ){
              ^~~~~~~
              foreach_rs
CMakeFiles/rs_bag2image.dir/build.make:62: recipe for target 'CMakeFiles/rs_bag2image.dir/realsense.cpp.o' failed
make[2]: *** [CMakeFiles/rs_bag2image.dir/realsense.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/rs_bag2image.dir/all' failed
make[1]: *** [CMakeFiles/rs_bag2image.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

realsense.cppの中身の以下の一行を

frameset.foreach( [this]( const rs2::frame& frame ){

次の一行に書き換えた。

frameset.foreach_rs( [this]( const rs2::frame& frame ){

その後、再度makeを行うと実行ファイルが作成される。

3.rs_bag2imageを使う

bagファイルがあるディレクトリで以下のコマンドを使う。

$ sudo ./build/rs_bag2image -b="output.bag" -s=true -d=true

私がコマンド実行時には、画像ファイルが作成されなかった。
realsense.cpp内の以下の一行を自分が指定したディレクトリまでの絶対パスで書き換えた。

directory = bag_file.parent_path().generic_string() + "/" + bag_file.stem().string();
directory = "/home/usrname/my_workspace/src/rs_bag2image/rs_bag2image/output";

書き換えたときは

$ rm -rf build
$ mkdir build
$ cd build/
$ cmake..
$ make

を再度行うことで実行ファイルを再び作成できる。

最後に

説明などを端折ってしまっているところが多々あるので、それぞれ参考にしたサイトを確認していただければ分かりやすいと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?