1. OpenCV란
OpenCV(Open Source Computer Vision Library)는 이미지 및 비디오 처리, 컴퓨터 비전 및 기계 학습을 위한 오픈소스 라이브러리입니다. 주로 실시간 컴퓨터 비전 애플리케이션을 개발하는 데 사용됩니다.
2. 설치 방법
OpenCV는MavenRepository에서 gradle을 종속성만 주입한다고 실행되지 않았다.
OpenCV와 같은 C++기반 NL이라 .dll (Window이므로)가 필요로 했다.
2-1. 직접 OpenCV를 라이브러리에 추가하기.
JavaCpp라는 C++ 라이브러리의 사용을 도와주는 라이브러리도 있는 것으로 보인다.
본 포스팅에서는 JavaCpp를 사용하지 않고 직접 추가해보겠다.
OpenCV를 사용하기위해서는 .jar와 .dll 파일이 필요하다.
OpenCV 홈페이지에서 다운받아 설치하면 다음 경로에 .jar파일과 .dll 파일을 확인할 수 있다.
- C:\Users\qwshp\Downloads\opencv\build\java\opencv.jar
- C:\Users\qwshp\Downloads\opencv\build\java\x64\opencv_java.dll
편의를 위해 프로젝트 루트에 /libs를 만들어 .jar 과 .dll 파일을 넣어두었다.
.jar 파일을 gradle에 추가한다.
dependencies{
implementation fileTree(dir:'libs', includes: ['*jar'])
}
그리고 .dll를 찾을 수 있게 환경변수에 해당 위치를 추가해주면 된다.
(환경변수 말고도 Run Configurations에 추가하는 방법도 있다.)
이 아래는 헤메는 과정이므로 생략해도 좋다.
OpenCV 홈페이지에서 파일을 다운 받아 설치하면 압축이 해제된다.
인텔리제이 Project Structure>Modules>Dependencies 에서 다운받은 jar를 직접 추가해주자
그 후 추가한 모듈에서 다시 본인의 운영체제에 맞는 라이브러리를 추가해준다.
main에도 똑같이 추가해주자.
그리고 아래의 코드와 같이 라이브러리를 주입해주면 된다.
코드
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class OpenCVManager {
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());
}
}
실행결과
error: package org.opencv.core does not exist
사실 안된다.
gradle은 dependencies에 추가를 해줘야 하나보다.
프로젝트 루트에 jar파일을 넣고 아래와 같이 추가한다.
dependencies {
implementation fileTree(dir:'./libs', includes: ['*jar'])
}
이제 다시 실행해보자
결과
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java4100 in java.library.path: C:\Users\qwshp\.jdks\corretto-17.0.9\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Oracle\Java\javapath;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files\Java\jdk-11\bin;"C:\Program Files\Java\jdk-17\bin;";C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Windows\system32;C:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files\Bandizip\;C:\Program Files\Docker\Docker\resources\bin;C:\Users\qwshp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\qwshp\AppData\Local\Programs\Python\Launcher\;C:\Users\qwshp\AppData\Local\Programs\Python\Python312\;C:\Users\qwshp\AppData\Local\Programs\Python\Python312\Scripts\;C:\Program Files\Tesseract-OCR;C:\LDPlayer\LDPlayer4.0;C:\Users\qwshp\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\qwshp\AppData\Local\Programs\Python\Python312\;C:\Users\qwshp\AppData\Local\Programs\Python\Launcher\;C:\Program Files\Java\jdk-17\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\qwshp\AppData\Local\Microsoft\WindowsApps;C:\Users\qwshp\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\qwshp\AppData\Roaming\npm;C:\jdk1.8\bin;:\Users\qwshp\AppData\Roaming\npm;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.2\bin;;C:\Users\qwshp\AppData\Local\afreeca;C:\Users\qwshp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Program Files\Tesseract-OCR;;.
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2434)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
at java.base/java.lang.System.loadLibrary(System.java:1989)
at com.coffebara.summaryBot.ocr.OpenCVManager.main(OpenCVManager.java:11)
아무래도 Native Libaray를 못찾는 것 같다. 환경변수에 직접 추가해주자.
참고
Path에 라이브러리 경로를 추가하고 cmd를 새로 열어서 java -XshowSettings:properties -version 명령어를 입력하면 java.library.path에 경로가 추가되는 것을 확인할 수 있다.
실행결과
mat = [ 1, 0, 0;
0, 1, 0;
0, 0, 1]
라이브러리 하나 추가하는데 4시간이 걸렸다...
참고
https://velog.io/@cksgh1224/library-path-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
'Backend > 프로젝트' 카테고리의 다른 글
갈아만든 임원 - 7 데이터 추출하기3 클립보드 접근 (1) | 2024.10.05 |
---|---|
갈아만든 임원 - 6 데이터 추출하기2 OpenCV 전처리 작업 (2) | 2024.09.25 |
갈아만든 임원 - 4 데이터 추출하기 (Tesseract OCR) (0) | 2024.09.23 |
갈아만든 임원 - 3 화면 조작 및 스크린샷 저장하기 (0) | 2024.09.22 |
갈아만든 임원 - 2 앱플레이어로 게임 실행하기 (1) | 2024.09.18 |