안드로이드 스튜디오 JavaCV 관련
안드로이드 스튜디오
JavaCV 관련
ㆍ 이번에 NDK, OpenCV를 써보면서 JavaCV라는것도 있길래
한번 써봤는데 확실히 C,C++을 안건드려서 쉽긴 한데
사용하는거 보다 버전 맞추고 셋팅하는게 더 힘든것 같다.
ㆍ꾸역꾸역 대충 셋팅 맞춰서 돌리는것 까진 완료했다..
Image Stitching 까지 해봤는데 OpenCV에서는 어려움이
많았는데 JavaCV로 하니까 금방 완성시켰다.
앞으로 OpenCV를
계속 쓰게 될거 같아서
JavaCV는
이번에 쓰고 언제
쓰게 될지 모르니
깊게 파진 않고
막혔던 부분만
기록에 남기려고 한다.
Build.gradle(:app)
apply plugin: 'com.android.application'
android {
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor'
pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
}
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "Package"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
configurations {
all*.exclude group: 'org.bytedeco', module: 'javacpp-presets'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.10-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.10-0.11', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.5.1-0.10', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.5.1-0.10', classifier: 'android-x86'
compile files('libs/opencv.jar')
compile files('libs/ffmpeg.jar')
compile files('libs/javacpp.jar')
compile files('libs/javacv.jar')}
이렇게만 해주고
바로 Java에서
써보니 쉽게 써진다.
imgcodecs 관련
이미지를 Mat으로 바꾸기 위해
사용하는데
OpenCV랑 똑같아서 바로
똑같이 입력해봤는데
imcodecs.imread("image 경로");
이상하게 imcodecs가 빨간줄이 뜨고
Alt+Enter를 눌러도 Import가 안뜨는것이다
Mat matImage1 = imgcodecs.imread(filePath + "/stitchImg.jpeg");
처음에는 이런식으로 했는데 빨간줄이 떠서
아래와 같이 바꾸니 됬다
opencv_core.Mat matImage1 = opencv_imgcodecs.imread(filePath + "/stitchImg.jpeg");
물론 쓰는것도 똑같다
opencv_imgcodecs.imwrite
stitching
stitcher에서 막히는 부분은
없었다
MatVector에 차곡차곡 넣어준후에
stitch 해주니까 바로 된다
opencv_stitching.Stitcher s = opencv_stitching.Stitcher.createDefault(false);
org.bytedeco.javacpp.opencv_core.MatVector stitchVector = new org.bytedeco.javacpp.opencv_core.MatVector(2);
stitchVector.put(0, matImage1);
stitchVector.put(1, matImage2);
int status = s.stitch(stitchVector,matImage3);
카메라 촬영후 Stitching
위에서 고정이미지 2장으로
Stitch 테스트를 마친후
Preview로 사진을 찍은후에
찍은 사진 여러장을
Stitch해봤다.
2장으로 테스트할때는
괜찮았는데
여러장으로 하니 역시
OOM이 발생했다
사진을 Uri, bitmap등 변환해서
BitmapFactory.Option으로
처리를 한 후에 resize해서
다시 Mat로 변환한후에
Stitching 하니까 문제 없이
사진 여러장도 완성했다
'안드로이드(android) > 알아두면 좋은것' 카테고리의 다른 글
앱 종료시 AsyncTask 종료시키기 (0) | 2016.08.15 |
---|---|
Notification 아이콘 클릭시 특정 프래그먼트로 이동 (1) | 2016.08.02 |
NDK : javah 문제(.h 안만들어질때 Could not find~) (0) | 2016.07.14 |
[안드로이드]코드 입력시 자동으로 import되도록 설정 (0) | 2016.06.27 |
자바코드로 res(리소스)에 있는 string, color 사용하기 (0) | 2016.06.16 |