2021년 6월 19일

이미지/영상 프로세싱을 위하여 자바를 지원하는 환경으로 OpenCV 설치하기

자바 기반 웹 프로그램에 이미지/영상 프로세싱 처리를 구현하기 위하여 OpenCV (Open Source Computer Vision) 설치하려고 한다.

설치는 대상은 아래와 같다. 

Development
  • JAVA 1.8.x
  • Eclipse 4.17.0
  • Tomcat 8.x 
  • HW : MacBook Pro 2019 
    • macOS Big Sur 11.4
    • 2.3Ghz 8Core Intel Corei9 
    • 16GB 2667 Mhz DDR4
    • SSD 1TB 
Server 
  • Tomcat 8.5.58.0
  • Open JDK 1.8.0_292-b10
  • Oracle Cloud : VM.Standard.E2.1.Micro 
    • CentOS Linux release 7.9.2009 (Core)
    • 1 OCPU, 1GB MEMORY, 50GB Block Volume
    • 1Network 0.48 Gbps

맥북에 설치하기

설치는 Homebrew 을 사용한다. (Homebrew 는 이미 설치된것으로 가정)


그림1. The Missing Package Manager for macOS (or Linux)


① XCode & Apple Command Line Tools 설치

XCoce 는 앱스토어(App Store)를 통하여 설치한다.


그림2. App Store

또한 최신 make , gcc 등과 같은 도구 설치를 위하여 콘솔에 아래 명령을 입력한다.

   
sudo xcode-select --install

② 자바 빌드 도구인 Apache Ant 를 설치한다.
     
brew update
brew install ant

③ OpenCV 설치
다음 명령을 사용하여 homebrew 에서 제공하는  버전을 확인해보면 2.x, 3.x 버전만 지원하고 있다. 최신 버전 설치를 위하여 아래와 같이 소스를 빌드하여 설치한다.

  
  brew search opencv

자바 지원을 위하여 Opencv 패키지 설정에서 아래와 같이 수정한다. (Homebrew 에서 패키지는 Formula 라  부른다 )

  
  brew edit opencv

-DBUILD_opencv_java=OFF  을  -DBUILD_opencv_java=ON  으로 변경




만일 빌드과정에서 특정 자바 버전을 지정할 필요가 있다면 brew formula 의 cmake 파트에  -DOPENCV_JAVA_TARGET_VERSION=1.8 값을 추가해줘야 한다. 
  
  args = std_cmake_args + %W[
      -DCMAKE_OSX_DEPLOYMENT_TARGET=
      -DBUILD_JASPER=OFF
      -DBUILD_JPEG=OFF
      -DBUILD_OPENEXR=OFF
      -DBUILD_PERF_TESTS=OFF
      -DBUILD_PNG=OFF
      -DBUILD_PROTOBUF=OFF
      -DBUILD_TESTS=OFF 
      -DOPENCV_JAVA_TARGET_VERSION=1.8

다음 명령을 실행하여 설치를 시작한다.
  
  brew install --build-from-source opencv

소스에서 빌드하여 설치하는 것은 많은 자원이 소요된다.


약 17분 정도가 소요되었다.


 /usr/local/Cellar/opencv/4.x.x/share/java/opencv4/.

자바에서 사용하기 위해서  jar 파일과 오브젝트 파일이 필요하다. (설치경로 확인 필수)

오라클 클라우드 리눅스에 설치하기

① 빌드를 위한 도구들을 설치한다.

  
  sudo yum install cmake3 gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools 
  gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel 
  gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel 
  jasper-devel jasper-utils swig python libtool nasm build-essential ant
  

② OpenCV 홈페이지에서 최신 소스를 다운로드한다. 빌드를 위한 opencv 디렉토리를 생성하고 해당 폴더 아래에 다운로드한 소스파일 압축을 푼다. 이제 빌드를 위하여 opencv 폴더로 이동한다.

  

wget https://github.com/opencv/opencv/archive/4.5.2.zip
mkdir opencv
unzip 4.5.2.zip -D ./opencv
cd opencv

③ 아래 명령을 입력하여 빌드를 시작한다.  

  

    cmake3 -D CMAKE_BUILD_TYPE=RELEASE 
    -D CMAKE_INSTALL_PREFIX=/usr/local 
    -D INSTALL_C_EXAMPLES=ON 
    -D INSTALL_PYTHON_EXAMPLES=ON 
    -D OPENCV_GENERATE_PKGCONFIG=ON 
    -D BUILD_EXAMPLES=ON opencv-4.5.2/


make 명령시 -j 옵션은 병렬 처리를 위한 코어 수를 의미하며 코어 수는 nproc 명령을 사용하면 알 수 있다.
오라클 클라우스 서버의 경우 빌드에  많은 시간이 소요되었다. (1 시간 이상)

       
      make -j2



설치 역시 많은 시간이 소요된다.
  
      sudo make install

라이브러리 설치 위치 : /usr/local/share/java/opencv4

④ 정상 동작 확인을 위하여 간단 예제를 사용하였다.

 
    import org.opencv.core.Core;
    import org.opencv.core.CvType;
    import org.opencv.core.Mat;
    
    public class Hello {
    
    	public static void main( String[] args ){
    		System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
    		Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );
            System.out.println( "mat = " + mat.dump() );
    	}
    }
    

테스트는 아래와 같이 소스를 컴파일하여 실행한다.

 
javac -cp /usr/local/share/java/opencv4/opencv-452.jar Hello.java

java -Djava.library.path=/usr/local/share/java/opencv4 -cp /usr/local/share/java/opencv4/opencv-452.jar:. Hello


⑤ Tomcat 환경에서 사용할 예정이기 때문에 아래와 같이 .bash_profile 파일에 네이티브 라이브러리 경로 추가한다. opencv-452.jar 은 사용하는 웹 프로그램의 WEB-INF/lib 복사해준다. 한가지 아쉬운 점은 무료로 사용하는 Oracle VM 의 성능이 MacBook Pro 와 너무 차이가 크다.

 

CATALINA_OPTS=' -Djava.library.path=/usr/local/share/java/opencv4 '
export CATALINA_OPTS ;


위와 같이 설치된 리눅스에서는 org.opencv.xphoto.Xphoto 패키지가 포함되지 않았다. 추가 모듈 설치가 필요한 부분으로 예상하고 git 에서 opencv_contrib 을 다운로드 하고 아래와 같은 방법으로 다시 빌드를 진행하였다. (처음에는 opencv 소스 역시 git 에서 다운하여 빌드를 하였으나 오류가 해결되지 않아 opencv_contrib 만 git 에 소스를 사용하는 방법을 사용했다.)

  
wget https://github.com/opencv/opencv/archive/4.5.5.zip
unzip 4.5.5.zip
git clone https://github.com/opencv/opencv_contrib.git
mkdir build 
cd build

cmake3 -D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_EXTRA_MODULES_PATH=/home/opc/src/opencv_contrib/modules \ 
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON  \
-D INSTALL_PYTHON_EXAMPLES=ON  \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_opencv_ximgproc=ON \
-D BUILD_EXAMPLES=ON /home/opc/src/opencv-4.5.5
 
make -j2
sudo make install 

참고자료

댓글 없음:

댓글 쓰기