자바 기반 웹 프로그램에 이미지/영상 프로세싱 처리를 구현하기 위하여 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 등과 같은 도구 설치를 위하여 콘솔에 아래 명령을 입력한다.
1 | sudo xcode-select --install |
② 자바 빌드 도구인 Apache Ant 를 설치한다.
1 2 | brew updatebrew 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분 정도가 소요되었다.
자바에서 사용하기 위해서 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.zipmkdir opencvunzip 4.5.2.zip -D ./opencvcd 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.javajava -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 ; |
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.zipunzip 4.5.5.zipgit clone https://github.com/opencv/opencv_contrib.gitmkdir build cd buildcmake3 -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 -j2sudo make install |





댓글 없음:
댓글 쓰기