Ubuntu 16.04 ์์ OpenCV 3.x ์ค์น
OpenCV ์ค์น์ ๋ค์ด๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
OpenCV๋ OS X, Linux, Windows, Android, iOS ์ด๋์๋ ์ง ์ฌ์ฉํ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ค์นํ๊ธฐ๊ฐ ์ข ๊น๋ค๋ก์ด Linux์์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ํฌ์คํ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ค์น๋ฅผ ์ํ ์ค๋น..
Linux์์ OpenCV๋ฅผ ์ค์นํ ๋๋ ์ผ๋ฐ ํ๋ก๊ทธ๋จ ์ค์น์ ๋ฌ๋ฆฌ ๋ฏธ๋ฆฌ ์ค๋น๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก ์ค์นํ๋ ๊ฒ์ด ์๋ ์์ค ์ฝ๋๋ฅผ ์ง์ ๋ฐ์์ ์ปดํ์ผํ์ฌ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ค์น๋ฅผ ์ํด OpenCV ์์ค ์ฝ๋์ ์ปดํ์ผ ๋๊ตฌ๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค.
- OpenCV Source Code
- build-essential, CMake, GCC
- NVIDIA CUDA (Optional)
ํน์ ์์ ์ ๋ ธํธ๋ถ์ด๋ PC์ NVIDIA ๊ทธ๋ํฝ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, ๋๋ผ์ด๋ฒ์ ๋์์ CUDA๊ฐ ์ค์น๋์ด ์์ด์ผ GPU๋ฅผ ์ด์ฉํ OpenCV ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ด ํฌ์คํธ์์๋ CUDA ์ค์น์ ๋๋ผ์ด๋ฒ ์ค์น๊น์ง ๊ฐ์ด ํฌ์คํ ๋ ๊ฒ์ ๋๋ค.
Linux์์ ์ฌ์ฉํ๋ C ์ปดํ์ผ๋ฌ๋ ๋๋ถ๋ถ GCC๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ญ์ ์ด ํฌ์คํธ์์๋ GCC๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ ๊ฒ์ ๋๋ค. ์ฐธ๊ณ ๋ก OpenCV๋ gcc 4.9 ๋ฒ์ ์ด์์์ ์ปดํ์ผ์ด ์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด ํฌ์คํธ์์๋ gcc 4.9 ๋ฒ์ ์ ๋ง์ถฐ ์ปดํ์ผ์ ์งํํ ๊ฒ์ ๋๋ค.
๊ทธ๋ผ ์ด์ ํ์ํ ์ค๋น๋ ๋ชจ๋ ๋๋ฌ์ผ๋, ์ค์น์ ์ง์ ๋ค์ด๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ณธ๊ฒฉ์ ์ธ OpenCV ์ค์น
์ ๋จผ์ OpenCV ์์ค ์ฝ๋๋ฅผ Github์์ ๋ฐ์ ๋จผ์ ๋ฏธ๋ฆฌ ๋ค์ด๋ก๋ ๋ฐ์ ๋๋๋ก ํ๊ฒ ์ต๋๋ค.
$ mkdir opencv
๋จผ์ OpenCV ์์ค ์ฝ๋๋ฅผ ๋ฐ์๋์ ์ ๋นํ ์ด๋ฆ์ ํด๋๋ฅผ ํ๋ ์์ฑํฉ๋๋ค.
$ cd opencv
ํด๋น ํด๋์ ๋ค์ด๊ฐ๋๋ค.
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib
git ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด OpenCV ์์ค ์ฝ๋์ ํ์ฅํฉ์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
$ sudo apt install git
๋ง์ฝ git์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด, ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด git์ ์ค์นํฉ๋๋ค.
์ด ๊ณผ์ ์ผ๋ก OpenCV ์์ค ์ฝ๋๊ฐ ๋ชจ๋ ๋ค์ด๋ก๋ ๋์์ต๋๋ค.
์ด์ ์ปดํ์ผ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
$ sudo apt update
$ sudo apt install build-essential checkinstall gcc-4.9 cmake pkg-config yasm libtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils libopenexr-dev python-tk libeigen3-dev libx264-dev
๋ ๋ช ๋ น์ด๋ฅผ ๋ชจ๋ ํ์ดํํฉ๋๋ค. ์ปดํ์ผ ๋๊ตฌ์๋ build-essential, pkg-config๊ฐ ํด๋นํ๊ณ ๋๋จธ์ง๋ ๋ชจ๋ OpenCV ์์์ฒ๋ฆฌ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋๋ค. ์๋ง ๋๋ถ๋ถ ์ต์ํ ๋จ์ด๋ค์ด๋ ํจํค์ง์ผ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.
$ sudo add-apt-repository ppa:mc3man/gstffmpeg-keep
$ sudo apt update
$ sudo apt install ffmpeg gstreamer0.10-ffmpeg
์ถ๊ฐ๋ก ์ค์นํด์ผ ํ mpeg ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํฉ๋๋ค.
(๋ฐ๋์ ์ค์นํด์ผํ๋ ๊ฒ์ ์๋์ง๋ง OpenCV Full Package ์ค์น๋ฅผ ์ํด์๋ ํ์ํ ์๋ ์์ต๋๋ค.)
์ฌ๊ธฐ์ ์ ๊น, OpenCV์ ๋ํ ์ค์น๋ฅผ ์ผ์ ์ค๋จํ๊ฒ ์ต๋๋ค.
NVIDIA Driver, CUDA ์ค์น (์ต์
, 64-bit only)
์ปดํ์ผ ํ๊ธฐ ์ ์, CUDA ์ฐ๋์ ์ํ์๋ ๋ถ๋ค์ OpenCV ์ค์น ์ดํ, ๋ฐ๋์ ์ด ๊ณผ์ ์ ๊ฑฐ์น์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ ์ง ์์ผ์ ๋ถ๋ค์ ๋ฐ๋ก, ๋ฐ์ผ๋ก ์ด๋ํ์ ์ OpenCV ์ค์น๋ฅผ ๊ณ์ ์งํํ์๋ฉด ๋ฉ๋๋ค. (CUDA์ ๋ํ ๋ณ๋์ ์ค๋ช ์ ํ์ง ์๊ฒ ์ต๋๋ค. ๋ณธ์ธ์ด ์ ๋ง๋ก ์๊ณ ์ฐ์๋ ๋ถ๋ง ์ฝ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.)
๋จผ์ NVIDIA ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด๋ณด๊ฒ ์ต๋๋ค.
Linux์์ ์ค์นํ๋ NVIDIA ๋๋ผ์ด๋ฒ๋ ๋ ๊ฐ์ง์ ์ข ๋ฅ๊ฐ ์์ต๋๋ค. ํ๋๋ Linux Repository์์ ์ ๊ณตํ๋ NVIDIA ๋๋ผ์ด๋ฒ, ๋ ํ๋๋ NVIDIA ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ฌ์ฉํ๋ ๋๋ผ์ด๋ฒ๋ก ๋๋ฉ๋๋ค.
๋ ๋ค ์ค์นํ๋ ๋ฐ๋ ํฐ ๋ฌธ์ ๊ฐ ์์ง๋ง, ์ฝ๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ์๋ Repository๋ฅผ ์ฌ์ฉํด ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ถ์ฒ๋๋ฆฌ๊ณ , ์์ ์ด ๊ผญ ์ต์ ๋ฒ์ ์ ๋๋ผ์ด๋ฒ๋ฅผ ์จ์ผํ๋ค๋ฉด, ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ค์นํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
์ด ํฌ์คํธ์์๋ Repository์์ ์ ๊ณตํ๋ ๋๋ผ์ด๋ฒ์ ์ค์น๋ก ์ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํฐ๋ฏธ๋์ ์คํํฉ๋๋ค.
$ sudo apt install nvidia-367 nvidia-367-dev nvidia-prime
์ด ๋ช ๋ น์ด๋ฅผ ์น๊ธฐ ์ ์, ๋ช ๊ฐ์ง ์๋ ค๋๋ฆฌ์๋ฉด, nvidia-367์์ 367์ ๋๋ผ์ด๋ฒ ๋ฒ์ ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ด ์ํ์๋ ๋๋ผ์ด๋ฒ ๋ฒ์ ์ ์ซ์๋ฅผ ์ ๋ ฅํ์ ์ ์ค์นํ์๋ฉด ๋ฉ๋๋ค. dev๋ ๊ฐ๋ฐ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์๋ nvidia-prime์ NVIDIA Optimus ๋๋ผ์ด๋ฒ ์ ์ฉ์ด๋ฏ๋ก ๋ ธํธ๋ถ์์ ์์ ์ด Optimus๋ฅผ ์ง์ํ๋ ๋ ธํธ๋ถ์ ์ฌ์ฉํ์๋ ๊ฒฝ์ฐ์๋ง ์ค์น๋ฅผ ๊ถ์ฅํฉ๋๋ค.
Non-Optimus, PC NVIDIA Graphic Card์์๋ prime์ ์ค์นํ์๋ฉด ์๋ฉ๋๋ค.
์ค์น๊ฐ ๋๋ฌ์ผ๋ฉด Linux๋ฅผ ์ฌ๋ถํ ํด์ค๋๋ค.
๋ค์์ CUDA๋ฅผ ์ค์น ํด๋ณด๊ฒ ์ต๋๋ค.
CUDA ์ญ์ Repository์์ ์ ๊ณตํ๋ CUDA, NVIDIA ํํ์ด์ง์์ ์ ๊ณตํ๋ CUDA๊ฐ ์์ง๋ง ์ฌ๊ธฐ์, Repository์์ ์ ๊ณตํ๋ CUDA๋ ์ค์นํ์ง ๋ง์๊ธฐ ๋ฐ๋๋๋ค. ํด๋น CUDA๋ CUDA์ ์ผ๋ถ๋ง ์ ์ฌ๋์ด ์์ด ์ค์ ์ฝ๋ฉ์ ๋ํ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ๋น ์ ธ ์์ต๋๋ค. (cuDNN์ด๋ NVCC ๋ฑ) CUDA ์ค์น๋ ๋ฐ๋์ NVIDIA ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ค์นํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
๋, CUDA ๋ฒ์ ์ ์์ ์ด ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ NVIDIA ๊ทธ๋ํฝ ์นด๋์ ๋ง์ถฐ ์ค์นํด์ผ ํฉ๋๋ค. ๋ฒ์ ํธํ์ ๋ํ ์ ๋ณด๋ NVIDIA ํํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
์ ๋ CUDA 8.0 ๋ฒ์ ์ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๋ฒํผ์ ํด๋ฆญํ์ฌ, NVIDIA CUDA๋ฅผ ๋ค์ด๋ก๋ ํ์ด์ง๋ก ๋ค์ด๊ฐ๋๋ค. ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด, ์ด์์ฒด์ ๋ Linux, ์ํคํ ์ฒ๋ x86_64, ๋ฐฐํฌํ์ Ubuntu, ๋ฒ์ ์ 16.04๋ฅผ ๋๋ฅด์๊ณ , local ์ค์น๋ณธ์ ๋ค์ด๋ก๋ ๋ฐ์ผ์๋ฉด ๋ฉ๋๋ค. ๋ค์ด๋ก๋ ์ฉ๋์ ์ฝ 1.2GiB์ ๋๋ค.
$ chmod +x cuda_8.0.44_linux.run
์ค์น ํ์ผ์ ์คํ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
$ sudo ./cuda_8.0.44_linux.run
๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์ค์น ํ์ผ์ ์คํํฉ๋๋ค.
๊ณ์ฝ์ ๋์๋ฌธ์ด ๋์ค๋ฉด, accept๋ฅผ ์ ๋ ฅํ๊ณ Enter๋ฅผ ๋๋ฆ ๋๋ค.
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n
--> ์ฐ๋ฆฌ๋ ์ด๋ฏธ NVIDIA ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ์ผ๋ฏ๋ก n์ ๋๋ฆ ๋๋ค.
Install the CUDA 8.0 Toolkit?
OpenCV ์ปดํ์ผ/์ค์น (์ด์ด์..)
์ ์ด์ OpenCV ์ปดํ์ผ์ ์ํ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. ์ด์ ๋ ๋ณธ๊ฒฉ์ ์ธ OpenCV ์ปดํ์ผ์ ๋ค์ด๊ฐํ ๋ฐ์. ์ฌ๊ธฐ์ ์ฌ๋ฌ๋ถ๋ค์ด ์๊ฐ์ ์กฐ๊ธ ๊ธธ๊ฒ ์ก์ผ์ ์ผ ํ ๊ฒ์ ๋๋ค. ์ปดํ์ผ ํ๋ ์๊ฐ์ ์ฌ๋ฌ๋ถ๋ค์ด ์ฌ์ฉํ๋ ์ปดํจํฐ์ CPU ์ฑ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง i7์ ์ฌ์ฉํ๋ ์ ๋ ๋ชจ๋ ์ฝ์ด์ ์ฐ๋ ๋๋ฅผ ์๋นํ์ฌ ์ต์ 1์๊ฐ 30๋ถ์ด ์์๋์์ต๋๋ค. (๊ทธ๋ณด๋ค ์ ์ ์ฝ์ด๋ ์๋ง 3์๊ฐ๋ ๋๊ฒ ๊ฑธ๋ฆฌ์ง ์์๊น... ์์ํด๋ด ๋๋ค.. ^^;)
$ mkdir build
์ ๋น๋๋ฅผ ์ํด ์๊น opencv ํด๋์์ build ํด๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑํฉ๋๋ค. ํด๋น ํด๋์ ์ปดํ์ผํ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ด๊ฒจ์ง๊ฒ๋๋ค.
$ cd build
ํด๋น ํด๋์ ๋ค์ด๊ฐ๋๋ค.
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr -D -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_TBB=ON -D WITH_IPP=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ../
์ฌ๊ธฐ์ ์ฌ์ฉํ๋ cmake ๋ช ๋ น์ด๋ ์ฌ๋ฌ๋ถ๋ค์ด OpenCV๋ฅผ ์ด๋ป๊ฒ ์ปดํ์ผํ๊ณ ์ถ์์ง๋ฅผ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ๋๋ค. ์ฐ๋ฆฌ๋ OpenCV ํ์ฅ ๋ชจ๋๊น์ง ๊ฐ์ด ์ค์นํ ๊ฒ์ ๋๋ค. ํ์ฅ ๋ชจ๋์ OpenCV ์ฝ๋ฉ ํ ๋ด๊ฐ ๋ง๋ ์ด๋ฏธ์ง๋ ์์์ ์ ์ฅํ๊ฑฐ๋ ํ๋ํ์ฌ ๋ณผ ์ ์๋๋ก ๋ง๋ ํ์ฅ ๊ธฐ๋ฅ์ ๋๋ค.
์๋ cmake ๋ช ๋ น์ด๋ make ๋ช ๋ น์ ์ข ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ํ๋ ๋ฒ์ฉ ๋น๋ ๋๊ตฌ๋ก OS X, Linux, Windows ๋ชจ๋์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋, CMake๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ์ปดํ์ผ ์ต์ ์ ์ฝ๋๋ก ์ง์ ์งค ์ ์์ด์ ์ฉ์ดํฉ๋๋ค.
์ฌ๊ธฐ๊น์ง cmake์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ด์๊ณ , OpenCV ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ CMake ๋ช ๋ น์ด ์ต์ ์ CMakeLists.txt ํ์ผ์์ ํ์ธํ ์ ์์ผ๋ฏ๋ก ์ด ํฌ์คํธ์์๋ ์์ธํ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค.
์ปดํ์ผ ์ต์ ์ค์ ์ ๋ชจ๋ ๋๋ง์ณค์ผ๋ฉด, ๋ค์์ ์ปดํ์ผ์ ๋ค์ด๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
$ make -j $(nproc)
์ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด, ๋ณธ๊ฒฉ์ ์ธ ์ปดํ์ผ์ ๋ค์ด๊ฐ๋๋ค. NVCC(CUDA)๊ฐ ์ค์น๋์ด ์๋ ๊ฒฝ์ฐ์๋ NVCC ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ๋ชจ๋ ์ปดํ์ผ๋๊ธฐ ๋๋ฌธ์ ๋ ์๊ฐ์ด ์์๋ ์๋ ์์ต๋๋ค. ๊ทธ ์ ์ ๋ช ๋ น์ด์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํ์๋ฉด....
$(nproc)๋ Linux์์ ์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ธ์์ ์ฝ์ด/์ฐ๋ ๋ ๊ฐฏ์๋ฅผ ์ ์ฅํ๊ณ ์๋ ์์คํ ๋ณ์์ ๋๋ค. i7์ 8 ์ฐ๋ ๋์ด๊ธฐ ๋๋ฌธ์ 8๊ฐ์ด๋ฉฐ, ์ ๋ช ๋ น์ด๋ฅผ ์น ๊ฒฝ์ฐ, ํ๋ก์ธ์์ ์๋ 8๊ฐ์ ์ฐ๋ ๋๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ์ปดํ์ผํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์ ์ ํ๊ฒ ๋ ๊ฒฝ์ฐ, ์๋ง ๋ฒ๋ฒ ์ผ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ๋ค์ด ์ปดํ์ผ ์ค์ PC๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด, ์ปดํ์ผ์ ์ฌ์ฉํ ์ฐ๋ ๋ ๊ฐฏ์๋ฅผ ๋ฎ์ถฐ์ ์ฌ์ฉํ์๋ฉด ์ํํ๊ฒ ๋ค๋ฅธ ์์ ๋ ๊ฐ๋ฅํ๋ ์ด ์ ์ฐธ๊ณ ํ์๊ณ ์ปดํ์ผ์ ์งํํ์๊ธฐ ๋ฐ๋๋๋ค.
$ sudo make install
๋ชจ๋ ์ปดํ์ผ์ ๋๋ง์ณค์ผ๋ฉด..(๋ฒ์จ?..) ์ปดํ์ผํ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ฅผ ๊ด๋ฆฌ์ ๊ถํ๊ณผ make ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ์ค์นํฉ๋๋ค.
$ sudo ldconfig
์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ OpenCV ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
$ pkg-config --modversion opencv
pkg-config ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ํ์ฌ ์ค์น๋ opencv ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ํ์ธํฉ๋๋ค.
3.1.0์ด๋ผ๊ณ ๋์ค์๋ฉด, ์ ์์ ์ผ๋ก ์ค์น๊ฐ ์๋ฃ๋ ๊ฒ์ ๋๋ค.
์ด์ ๊ทธ๋ผ ์์ ๋ก ์์ค ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ณ , ์ปดํ์ผ ํด๋ณด๊ฒ ์ต๋๋ค.
์ ์ฝ๋๋ ์์์ ์ด๋ฏธ์ง๋ฅผ ํ ์ฅ ๋ถ๋ฌ์์, ๊ทธ ์ด๋ฏธ์ง๋ฅผ ๋์์ฃผ๋ ์์ฃผ ์ฌ์ด ์์ ์ฝ๋์ ๋๋ค
์ปดํ์ผ์ ํ ๋ฒ ํด๋ณด๊ฒ ์ต๋๋ค.
$ g++ -o main main.cpp `pkg-config opencv --cflags --libs`
g++ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ์ปดํ์ผํฉ๋๋ค.
ํค์ผ.. ~_~
(์ถ์ฒ: ๋๋ฌด์ํค)
๋ง์น๋ฉฐ...
์ฒ์ ์ค์น๋ถํฐ๊ฐ ๋นก์ (?) OpenCV ์ค์น์์ต๋๋ค. ๋ฌผ๋ก Linux์์๋ง ์ค์น๊ฐ ์ด๋ ๊ฒ ์กฐ๊ธ ์ด๋ ต์ต๋๋ค.. ;; Windows์์๋ ์ค์น๊ฐ ์ด๊ฒ๋ณด๋ค๋ ์ฌ์์ ํ ํธ์ ๋คํ์ด์ง๋ง Windows์์๋ OpenCV 3.x ๋ฒ์ ์ค์นํ๊ธฐ๋ ๊ฝค ๊ณ ๋ฌํ ๊ฒ์ผ๋ก ์๋๋ค.
๋ง์ง๋ง์ผ๋ก ๊ฐ๋จํ ์ค๋ฅ ์กฐ์น ๋ฐฉ๋ฒ์ ์ฌ๋ฆฌ๊ณ , ์ด๋ฒ ํฌ์คํ ์ ๋ง์น๊ฒ ์ต๋๋ค. ์ฑ๊ณตํ์ ๋ถ๋ค ๋ชจ๋ ์ถํ๋๋ฆฌ๊ณ ์๊ณ ํ์ จ์ต๋๋ค.
(๋ณ์ฒจ) ์ค๋ฅ ์กฐ์น
์ปดํ์ผ ๋์ค, GCC ๋ฒ์ ์ด ๋๋ฌด ๋์์ ์ค๋ฅ๊ฐ ๋๋ ๊ฒฝ์ฐ.
์ฐ๋ถํฌ ๋ฆฌ๋ ์ค 16.04 ๋ฒ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก gcc 5.3 ์ด์์ ์ปดํ์ผ๋ฌ๊ฐ ์ค์น๋๋ค ๋ณด๋ 4.9 ๋ฒ์ ์ ์ค์นํด๋ ํด๋น ๋ฒ์ ์ด ๋ฎ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ด ๋๋ ๊ทธ๋ฅ gcc 5.3 ๋ฒ์ ์ ์ ๊ฑฐํ๋ฉด ๊ทธ๋ง์ด์ง๋ง, '๋๋ ์ ๊ฑฐํ๊ธฐ ์ซ๋ค' ๋ ๋ถ๋ค์ update-alternatives ๋ช ๋ น์ด๋ฅผ ํตํด gcc ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ฅผ 4.9 ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ฉด ๋ฉ๋๋ค.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
gcc์ g++ ๋ชจ๋, 5 ๋ฒ์ ๊ณผ 4.9 ๋ฒ์ ์ ๋ํ ์ค์ ์ ์์ ๊ฐ์ด ํด์ฃผ๋๋ก ํฉ๋๋ค.
$ sudo update-alternatives --config gcc
gcc ๋ช ๋ น์ด์ ๋ํ ์ค์ ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ ๋ Priority์ ์ซ์๋ฅผ ์์ ์๋ ๊ฒ๊ณผ ๋ฐ๋๋ก ์ค์ ํ์์ต๋๋ค. Priority๋ ๊ทธ์ ์ฐ์ ์์์ ๋ถ๊ณผํ ๊ฒ์ด๋ฏ๋ก auto mode์ผ ๋๋ง ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณ๋ก ์ค์ํ์ง ์์ผ๋ฏ๋ก ์ค์ ์ด ๋ค๋ฅด๋ค๊ณ ํด์ ๋นํฉํ์ค ํ์๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ณธ์ธ์ด ์ํ์๋ ๋ฒ์ ์ gcc์ ๋ฒํธ๋ฅผ ์ ํํ์๊ณ Enter๋ฅผ ๋๋ฅด์๋ฉด gcc์ ๊ธฐ๋ณธ ๋ช ๋ น์ด ๋ฒ์ ์ด ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
gcc์ ๋ช
๋ น์ด๊ฐ 4.9 ๋ฒ์ ์ผ๋ก ๋ด๋ ค๊ฐ์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก g++๋ ๋๊ฐ์ด ์ ์ฉํ์๊ณ , ๋ค์ ์ปดํผ์ผ ํ์๋ฉด ๋ฉ๋๋ค.
OpenCV ๋ฒ์ ์ด 2.4.9.1๋ก ๋์ค๋ ๊ฒฝ์ฐ
pkg-config ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด๋ดค๋๋ OpenCV ๋ฒ์ ์ด 3.1.0์ผ๋ก ๋์ค์ง ์๊ณ , 2.4.9.1๋ก ๋์ค๊ณ , ์์ค ์ฝ๋๋ฅผ ์์ฑํ๋๋ ์ ๋๋ก ์ปดํ์ผ์ด ๋์ง ์๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ฐ๋ถํฌ ๋ฆฌ๋ ์ค 16.04 ์๋ ํฌ์ํ๊ฒ๋ OpenCV 2.4.9.1 ๋ฒ์ ์ด ๋ ํฌ์งํฐ๋ฆฌ์์ ์ ๊ณต๋ฉ๋๋ค. ๊ฒ๋ค๊ฐ ์ด๊ฒ์ด ๊ธฐ๋ณธ์ผ๋ก ์ค์น๊ฐ ๋์ด ์์ด์, ์ค์นํ๋ ๋ฐ ์ ๋ ๋ง์ ์ ๋ฅผ ๋จน์๋ ๋ถ๋ถ ์ค์ ํ๋์ ๋๋ค. (์ถ์ฒ: http://webnautes.tistory.com/1030 )
$ sudo apt autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
Python์์ ์ฌ์ฉ๋๋ OpenCV ์ ๊ณต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ 2.4.9.1 ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
$ pkg-config --modversion opencv
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฒ์ ์ ํ์ธํด๋ณด์๋ฉด, ์ ์์ ์ผ๋ก 3.1.0์ด ๋์ค๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
'Programming > OpenCV' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GP] OpenCV Trackbar ์ฃผ๋ฌด๋ฅด๊ธฐ (0) | 2017.03.01 |
---|---|
OpenCV์์ KeyEvent๋ฅผ ์ฌ์ฉํด๋ณด์. (0) | 2017.01.21 |
OpenCV์์ Mouse Event๋ฅผ ์ฌ์ฉํด๋ณด์ (0) | 2016.12.18 |
OpenCV์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ๊ณผ Mat ํด๋์ค (0) | 2016.11.20 |
C++์์ ์์ํด๋ณด๋ OpenCV (0) | 2016.10.30 |