[Android] Android JavaCV - Setting & Quick Guide
- 퓨림노
- Mobile/android
- 2011. 5. 13.
최종 수정일 : 2011. 05. 12
작성자 : 퓨림노 ( vbflash@nate.com / jppark@vr.knu.ac.kr )
1. 공부할 내용 목차 작성
2. 공개를 할까 말까~~~ 고민중
if( ( Rand()%100000000 ) > 9999 )
공개;
네번째 포스팅이군요~^_^;; 제블로그를 들어와서 많은 분들이 배너를 눌러 주셨더라구요....
정말로 감사드립니다.
그리고 지난번 주제에 이어서 NDK 를 계속 공부를 하고있었는데...커다란 진전은 없네요....
JNI 관련된 책도 계속 책 표지만 보는중(?) 이지만요...ㅎㅎ
원래 영상처리를 목적으로 JNI 를 보게 되었었는데...
처음 안드로이드를 접하는 그날부터 3일동안 JNI 를 이용해서 opencv 를 바로 쓰자!
라고 맘을 먹었지만...
역시 처음부터하면 하나하나 손을 많이 봐야하겠지요?
그렇게 삽질을 하는 동안, JavaCV 를 잊고 있었습니다. T_T...
한 몇일동안 또 삽질해서 'ㅅ' 돌려보았는데....
JavaCV 이지 "Android for JavaCV" 가 아니라서 조금 수정을 해야 하더라구요~
아마...포스팅을 하고나서 'ㅅ'/ 비공개를 하지 않을까 싶은데 ㅎㅎㅎㅎㅎ
일단 공부부터 다시!!
그럼 이제 시작 해볼까요!?(김동률씨 "오래된노래" 음악을 들으며~♡)
♡ 비공개이지만! 언젠가 공개를 하겠죠? 그때까지 비공개 입니다.
♡ 목차 ♡
1. 필요한 도구
2. 환경 설정
3. Quick Start
0. Reference
&. Project > Properties> Java Build Path > Libraries and click "Add JARs..." 를 찾아옴
# OpenCV for Android( JavaCV Setting)
- 필요한 도구 [01참조]
&. Java SDK
&. Eclipse
&. OpenCV 2.2 ( http://sourceforge.net/projects/opencvlibrary/files/ )
&. Precompiled for Android 2.2 ( http://code.google.com/p/javacv/downloads/list )
&. javacv-bin-20110511.zip
&. javacv-src-20110511.zip
&. OpenCV-2.2.0-android-arm.zip
※ 주의사항
&. Android 를 돌리기 위한 기본 환경 설정이 잡혀져 있는 상태에서 Precompiled for Android 2.2 의 파일만 있어도 사용이 가능하다
# 환경설정
&. 생각해보니, 특별하게 환경 셋팅이라고 할게 없다. 단지 Android 를 사용하면서 Library 를 사용하는 방법을 알아야 하겠다. 다음 챕터에서 알아보자.
# Quick Start
&. http://code.google.com/p/javacv/ 의 Quick Start for OpenCV 를 참조하길 바람
&. Eclipse(Android 2.2) 버전을 중심으로 설명을 함
&. Eclipse 에서 Android Project 를 생성
&. 프로젝트에서 File > New > Folder , "libs/armebi" 폴더를 생성
&. 위의 Java-bin-xxx.zip 파일을 압축을 풀면 javacpp.jar, javacv.jar 파일이 있다.
libs 폴더 아래 두면 된다. ( Eclipse 에서 F5 Key 를 눌려서 프로젝트 Tree 를 새롭게 갱신해서 확인)
&. javacv-android-arm.jar 파일을 libs/armebi 폴더아래에 압축 푼다.
&. javacpp.jar, javacv.jar 파일을 선택한다.
※. 물론 여기서 끝이났다.
- 여기까지는 누구나가 다 할 수 있을 것이다. (금방...합니다)
- 그리고 이제부터 하는 내용은! Java에서 OpenCV 를 사용하는것이 아니라 Android Project 에서 OpenCV 를 사용하기위해서 삽질한 내용을 정리하고자 합니다.
# 먼저 주절 주절 정리하자.
- Java package 에는 있지만 Android package 에는 없다.
Java API 를 삶펴보면 알겠지만, 무수히 많은 package 들이 있다. 하지만, Android package 에는 아직 추가가 되지 않은 내용들이 많이 있다. 그리고 Android 에서는 사용을 할 수 없는 package 들이 있다 라는 것. 예를 들어서, CanvasFrame 은 Java에서 swings(GUI) 으로 출력을 할 수 있지만, Android 에서는 Android 만의 출력방법에 따라야 하므로 사용방법이 틀려져야 한다는 것이다.
- IplImage 와 Bitmap 의 형변환
OpenCV 에서는 IplImage data 형을 사용을 한다. 하지만 Android 에서는 Bitmap 형태를 이용하여 Android Canvas 에 출력을 하게 된다. ( 또는 EditView에 출력 )
- 간단하게 방법만 알아보도록 하자.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IplImage image;
image = cvLoadImage("/sdcard/image0.png");
if (image != null) {
cvSmooth(image, image, CV_GAUSSIAN, 11);
cvSaveImage("/sdcard/image11.png", image);
}
try {
IplImage imagewithalpha = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 4);
cvCvtColor(image, imagewithalpha, CV_RGB2RGBA);
Bitmap bm = Bitmap.createBitmap(image.width(), image.height(), Bitmap.Config.ARGB_8888);
bm.copyPixelsFromBuffer(imagewithalpha.getByteBuffer());
ImageView iv = (ImageView)findViewById(R.id.testview);
iv.setImageBitmap(bm);
} catch (Exception e) {
Log.w("mytag", "fail to display...");
}
}
필요한 것만 짧게 쓰도록 하자^_^/
1. Android SD Card 에서 읽어오기 위해서 "/sdcard/파일경로.png" 로 하였다.
2. OpenCV 의 Function 을 그대로 사용하였다.
3. Iplimage 를 Bitmap 로 값을 copy 시켰다.
4. Bitmap 를 이용하여 ImageView 에 출력을 하였다
JavaCV 정리는 스크린샷이 없습니다. 그만큼 간단하니깐! 지저분하게 하기 싫네요..하하(귀차니즘..?)
비공개가 얼마나 길지는 모르지만,
모쪼록 혼자만의 공부 이대로 남기자.
# Reference
[01] Google's JavaCV
- http://code.google.com/p/javacv/
- (Quick Start for OpenCV)
- http://code.google.com/p/javacv/#Quick_Start_for_OpenCV
- (Hints for Converting OpenCV C/C++ code to JavaCV)
- http://code.google.com/p/javacv/wiki/ConvertingOpenCV
※ 주의사항 : JavaCV 이니 Android 는 관련 없음!(즉, 참조만 하길!!)
[02] JavaCV's Camera Exmaple
- http://opencv-users.1802565.n2.nabble.com/JavaCV-now-works-on-Android-too-td5794805.html
[03] ABD Shell 명령어
- http://allyus.egloos.com/3009728
[04] JavaCV's SURF
- http://code.google.com/p/javacv/issues/detail?id=45
[05] JNA on Android
- http://code.google.com/p/javacv/wiki/JNAOnAndroid
[06] Android SD card 생성하기
- http://uiandwe.tistory.com/entry/android-sd-card-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0
'Mobile > android' 카테고리의 다른 글
[JNI/NDK] Android Camera & Canvas Size (0) | 2011.06.06 |
---|---|
[JNI/NDK] Android Camera ( YUV420 to RGB, RGBA) (5) | 2011.06.06 |
Android JavaCV (1) | 2011.05.12 |
[Android] Android - OpenCV Setting (83) | 2011.02.26 |
[Android] Android - 단축키 (0) | 2011.02.18 |