자바 기반 웹 프로그램에 이미지/영상 프로세싱 처리를 구현하기 위하여 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 는 이미 설치된것으로 가정)
XCoce 는 앱스토어(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분 정도가 소요되었다.
자바에서 사용하기 위해서 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 ;
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
댓글 없음:
댓글 쓰기