Structure From Motion (SfM) 시험 ~ OpenCV3.3.1 + SfM 모듈 (Ubuntu 16.04) ~
OpenCV(3.3.1) + SfM 모듈을 사용하여 샘플을 실행해 보았습니다.
Structure From Motion(SfM)이란?
Structure From Motion은 여러 이미지에서 3차원 모양을 복원하는 기술입니다.
htps // 엔.ぃきぺぢ아. 오 rg / uki / St 루 c 얽힘 _ f 여 m_ 모치 온
실행 환경
· 우분투 16.04 LTS
· OpenCV 3.3.1
도입 절차
SfM 모듈 도입
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/db/db8/단독 l_sfm_인 s 치치온. HTML
필요한 패키지 설치
sudo apt-get install libeigen3-dev libgflags-dev libgoogle-glog-dev
없으면 Cmake도 설치
sudo apt-get install cmake
Ceres Solver 빌드 및 설치
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
make test
sudo make install
OpenCV(3.3.1) + contrib 도입
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/d7/d9f/개별 l_ぃぬx_いんsたっ l. HTML
필요한 패키지 설치
sudo apt-get install build-essential
sudo apt-get install cmake git 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 libjasper-dev libdc1394-22-dev
튜토리얼에 나와 있지 않지만 필요한 패키지 (Viz) 설치
sudo apt-get -y install libvtk5-dev
Git Repository에서 최신 소스 코드 얻기
cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
OpenCV(3.3.1) + contrib 빌드 및 설치
cd ./opencv
mkdir build
cd build
# cmake [<some optional parameters>] <path to the OpenCV source directory>
# オプション: OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory>
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. <path to the OpenCV source directory>
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory> ..
# make
# ジョブ数:8 (任意)
make -j8
# make install
sudo make install
샘플 코드 실행
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/d5/다 b/개별 l_sfm_t등지 c와 ry_에스치마치온. HTML#gsc. b = 0
htps : // 코 m / 치 오치카 c 치아 티 / ms / 178d23508b92 A09E 59E
htps // 이와키 2009. bgs포 t. jp / 2016/01 / 우분츠 1404_7. HTML
trajectory_reconstruccion.cpp 컴파일
cd <path to opencv_contrib directory>/modules/sfm/samples/
g++ -o trajectory_reconstruccion trajectory_reconstruccion.cpp `pkg-config --libs opencv` -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1
※오류 대응 메모
· 에러 케이스 1
/usr/local/include/opencv2/sfm/numeric.hpp:41:22: fatal error: Eigen/Core: No such file or directory
compilation terminated.
→ -I/usr/include/eigen3 옵션 추가
· 에러 케이스 2
trajectory_reconstruccion.cpp: In function ‘int main(int, char**)’:
trajectory_reconstruccion.cpp:148:77: error: ‘reconstruct’ was not declared in this scope
reconstruct (points2d, Rs_est, ts_est, K, points3d_estimated, is_projective);
→ -DCERES_FOUND=1 옵션 추가
Viz 패스를 통과
· 우분투 16.04 LTS
· OpenCV 3.3.1
도입 절차
SfM 모듈 도입
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/db/db8/단독 l_sfm_인 s 치치온. HTML
필요한 패키지 설치
sudo apt-get install libeigen3-dev libgflags-dev libgoogle-glog-dev
없으면 Cmake도 설치
sudo apt-get install cmake
Ceres Solver 빌드 및 설치
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
make test
sudo make install
OpenCV(3.3.1) + contrib 도입
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/d7/d9f/개별 l_ぃぬx_いんsたっ l. HTML
필요한 패키지 설치
sudo apt-get install build-essential
sudo apt-get install cmake git 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 libjasper-dev libdc1394-22-dev
튜토리얼에 나와 있지 않지만 필요한 패키지 (Viz) 설치
sudo apt-get -y install libvtk5-dev
Git Repository에서 최신 소스 코드 얻기
cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
OpenCV(3.3.1) + contrib 빌드 및 설치
cd ./opencv
mkdir build
cd build
# cmake [<some optional parameters>] <path to the OpenCV source directory>
# オプション: OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory>
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. <path to the OpenCV source directory>
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory> ..
# make
# ジョブ数:8 (任意)
make -j8
# make install
sudo make install
샘플 코드 실행
참고)
htps : // / cs. 오펜 cv. rg/3.3.1/d5/다 b/개별 l_sfm_t등지 c와 ry_에스치마치온. HTML#gsc. b = 0
htps : // 코 m / 치 오치카 c 치아 티 / ms / 178d23508b92 A09E 59E
htps // 이와키 2009. bgs포 t. jp / 2016/01 / 우분츠 1404_7. HTML
trajectory_reconstruccion.cpp 컴파일
cd <path to opencv_contrib directory>/modules/sfm/samples/
g++ -o trajectory_reconstruccion trajectory_reconstruccion.cpp `pkg-config --libs opencv` -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1
※오류 대응 메모
· 에러 케이스 1
/usr/local/include/opencv2/sfm/numeric.hpp:41:22: fatal error: Eigen/Core: No such file or directory
compilation terminated.
→ -I/usr/include/eigen3 옵션 추가
· 에러 케이스 2
trajectory_reconstruccion.cpp: In function ‘int main(int, char**)’:
trajectory_reconstruccion.cpp:148:77: error: ‘reconstruct’ was not declared in this scope
reconstruct (points2d, Rs_est, ts_est, K, points3d_estimated, is_projective);
→ -DCERES_FOUND=1 옵션 추가
Viz 패스를 통과
sudo apt-get install libeigen3-dev libgflags-dev libgoogle-glog-dev
sudo apt-get install cmake
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
make test
sudo make install
sudo apt-get install build-essential
sudo apt-get install cmake git 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 libjasper-dev libdc1394-22-dev
sudo apt-get -y install libvtk5-dev
cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd ./opencv
mkdir build
cd build
# cmake [<some optional parameters>] <path to the OpenCV source directory>
# オプション: OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory>
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. <path to the OpenCV source directory>
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib modules directory> ..
# make
# ジョブ数:8 (任意)
make -j8
# make install
sudo make install
cd <path to opencv_contrib directory>/modules/sfm/samples/
g++ -o trajectory_reconstruccion trajectory_reconstruccion.cpp `pkg-config --libs opencv` -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1
ldd trajectory_reconstruccion
not found 가 되어 있어 패스가 통과하고 있지 않다・・
linux-vdso.so.1 => (0x0000~)
libopencv_sfm.so.3.3 => /usr/local/lib/libopencv_sfm.so.3.3 (0x0000~))
libopencv_viz.so.3.3 => not found
...
# ファイル生成
cd /etc/ld.so.conf.d
touch opencv_viz.conf
파일 생성 후 opencv_viz.conf에/usr/local/lib를 입력하고 저장하고,
ldconf.cache를 갱신 (※ 고속화를 위해 캐시로부터 읽어내기 때문에)
# ldconf.cache 更新
ldconfig
경로 확인
ldconfig -p | grep opencv_viz
패스가 다니고 있는 것을 확인할 수 있었습니다.
libopencv_viz.so.3.3 (libc6,x86-64) => /usr/local/lib/libopencv_viz.so.3.3
libopencv_viz.so (libc6,x86-64) => /usr/local/lib/libopencv_viz.so
trajectory_reconstruccion 실행
./trajectory_reconstruccion ./data/desktop_tracks.txt 1914 640 360
실행하면 Viz가 시작됩니다.
마우스로 각도를 바꿀 수 있는 것 외에 다음의 키를 사용할 수 있습니다.
키
내용
s
카메라 시점으로 스위치
q
종료
scene_reconstruction 실행
사쿠라다 파밀리아를 촬영한 4장의 화상으로부터 3차원 정보를 복원합니다.
※화상은 여기 입니다.
g++ -o scene_reconstruction scene_reconstruction.cpp `pkg-config --libs opencv` -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1
./scene_reconstruction ./data/images/dataset_files.txt 350 240 360
Viz가 시작되고 사쿠라다 파밀리아의 점 구름이 표시됩니다.
하단 선의 노란색 점은 카메라에서 촬영 위치입니다.
키
내용
q
종료
이상, Structure From Motion (SfM)으로 OpenCV (3.3.1) + SfM 모듈을 시도했습니다.
Reference
이 문제에 관하여(Structure From Motion (SfM) 시험 ~ OpenCV3.3.1 + SfM 모듈 (Ubuntu 16.04) ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fujin/items/d7ec313a33f9195bd2e0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)