검색

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 등과 같은 도구 설치를 위하여 콘솔에 아래 명령을 입력한다.

1
sudo xcode-select --install

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

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

1
brew search opencv

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

1
brew edit opencv

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




만일 빌드과정에서 특정 자바 버전을 지정할 필요가 있다면 brew formula 의 cmake 파트에  -DOPENCV_JAVA_TARGET_VERSION=1.8 값을 추가해줘야 한다. 
1
2
3
4
5
6
7
8
9
10
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

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

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


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


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

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

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

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

1
2
3
4
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 폴더로 이동한다.

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

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

1
2
3
4
5
6
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 시간 이상)

1
make -j2



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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
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() );
    }
}

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

1
2
3
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 와 너무 차이가 크다.

1
2
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 에 소스를 사용하는 방법을 사용했다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

참고자료

댓글 없음:

댓글 쓰기