달력

052012  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

'Android/Android JavaCV / JNI'에 해당되는 글 4건

  1. 2011/06/06 [JNI/NDK] Android Camera & Canvas Size
  2. 2011/06/06 [JNI/NDK] Android Camera ( YUV420 to RGB, RGBA) (2)
  3. 2011/05/13 Android JavaCV - Setting & Quick Guide (2)
  4. 2011/05/12 Android JavaCV (1)

광고 한번만 클릭 부탁드립니다^^

포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject Android Camera & Canvas Size

최종수정일 : 2011.06.06

안녕하세요^^
  앞에 정리하였던 Android Camera 를 사용함에 있어서, Impage Processing 을 한 결과를 가지고 있다가 
OnDraw() 함수에서 호출하여 결과를 출력하면 Canvas 에 출력이 되는 것을 알수가 있습니다. 
여기서, 간혹 문제가 발생을 하게 됩니다. 


발생하는 문제
- surfaceChanged() 함수에서 설정한 Camera 의 사이즈와 Draw 를 하기위해서 사용하는 Canvas 의 Size가 틀리다.

SurfaceChanged() 함수에서, 즉 Android 의 Camera 가 지원되는 해상도는 다음과 같다. 
(스마트폰의 기기에 따라서 틀려지니, 주의하자)

더보기




해결방법!

[소스코드]
canvas.scale( x, y ); 

[end] 
를 사용하도록 한다. 


위에 보이는 scale() 함수를 사용하면 된다. 
예를 들테니, 적당히 알아서 짱구돌리도록하자. 

위에 숨겨진 공간을 살펴보면, 대략적으로 눈치가 챗으리라고 생각한다. 
현재 Caemra 는 800*600 이미지를 출력한다. 
그리고 Canvas 에서는 1024*600 의 크기이다. 


즉 비율이 맞지 않다. 어떻게 해야할까? 고민하고, 검색도 해보았지만,
당연히 Canvas 의 size 를 늘리는 방법도 한가지 방법이라 생각된다. 

산수 계산을 해볼까요?

800x:600y = 1024:600 의 비율이 있을 때 
X = 의 값은 얼마?
Y = 의 값은 당연 1


그러므로 canvas.scale( x(?), 1 ); 으로 canvas size 를 조절해 주기만 하면된다. 




by 퓨림노

저작자 표시 비영리 동일 조건 변경 허락

'Android > Android JavaCV / JNI' 카테고리의 다른 글

[JNI/NDK] Android Camera & Canvas Size  (0) 2011/06/06
[JNI/NDK] Android Camera ( YUV420 to RGB, RGBA)  (2) 2011/06/06
Android JavaCV - Setting & Quick Guide  (2) 2011/05/13
Android JavaCV  (1) 2011/05/12
Posted by 퓨림노

광고 한번만 클릭 부탁드립니다^^

포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject HashMap 사용법, (아니 중첩 arraylist 사용법)

최종수정일 : 2011.06.06

안녕하세요^^
 안드로이드에 Camera 를 공부하면서
(with JavaCV) 발생하는 문제점 입니다. 
이미지 프로세싱을 하기위해서는 OpenCV 이미지의 IplImage 형태로 변환을 하게 됩니다. 

Android Camera 의 영상YUV420 으로 되어있습니다. 
이를 RGB, RGBA 형태로 변환을, 그리고 data형의 변환을 합니다. (byte[] => IplImage) 로 변환!
by 퓨림노
 
(파일 출처가 기억이 안납니다. 죄송합니다.)

몇가지 주의 사항을 알려드리겠습니다. 

1. Android 에서 Image Processing 을 하기위해서, 아래와 같이 하면 되겠지? 라는 생각을 하면 안된다.

processImage(byte[] data, int width, int height) 에서 

 data[]  -> bgr[] -> IplImage -> ( Image Processing ) -> bgr[] -> data[] 의 순서대로 흘러가면

카메라의 영상이 변경이 되어있을 꺼라 생각 된다. 그러나 Android에 Camera를 이리저리 손대보아도 수정이 불가 하였다. 그래서 Document 를 찾아봐야하는데..안찾아봤네요!!!!!!( posting 하면서 느낀점...)

아무튼..Caemra 의 영상을 수정하여 되돌리기는 실패를 하였다.( 현재로서는...수정되면 고쳐야죠~!!)

테스트를 할때에는 Image processing 을 하고나서 결과이미지를 file 로 저장을 하여서 확인을 하였습니다. 
간단하게 소스를 공개 하겟습니다. 

[소스코드]

 
protected void processImage(byte[] data, int width, int height) {
		try {
			
			// Debug  Get Time1 
			DebugFIleIO.getInstance().newFile( "processImage_1", "_0");
			
			int size3 = width * height * 3;			
			byte bgr[] = new byte[size3];			
			IplImage ImgGray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1 );
			IplImage ImgRGB = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3 );
			
			// test 1/2 size
			//IplImage ImgGray2 = cvCreateImage(cvSize(width/2, height/2), IPL_DEPTH_8U, 1 );
			
			
			VRConvert.vrBGRformYUV(bgr, data, width, height);
			ImgRGB.getByteBuffer().put(bgr); // IplImage <- bgr(byte)
			cvCvtColor( ImgRGB, ImgGray, CV_BGR2GRAY );
			
			// test 1/2 size
			//cvResize( ImgGray, ImgGray2 );
			
			DebugFIleIO.getInstance().newFile( "processImage_2", "_0");
			LSDMgr.getInstance().LsdImageProcessingonMobile( ImgRGB, ImgGray, width, height);

		} catch (Exception e) {
			Log.w("vbflash", "Exception - processImage()... ");
		}
		postInvalidate();
	}
vrBGRformYUV() 함수는 첨부파일에 있는 것을 사용하면 됩니다. ( 알아서 스샤샤샤!! )
그리고 'ㅅ'/ 뭐 딱히 더 드릴 이야기는 없습니다.
물론 요까지 하신다면 알아서 척척 하실 수 있을꺼라 생각됩니다.

(이것도 URL 을 잘 모르겠네요...T_T)

참 포스팅을 끝내려고하니깐, 당연히 알아두어야 하는 것이 있지 않습니까!?
카메라를 Image Processing 을 하였는데 Camera 에는 결과 출력을 해야하지 않겠습니까!?

MFC처럼 OnDraw() 함수에 출력만 해주면 됩니다.
물론 Android 에서 Camera 를 사용하는 방법은 여러가지가 있는데, 위의
processImage() 함수가 호출이 되지 않던가?
아니면 Draw() 가 안되는 경우가 발생하게 됩니다. 물론 위에 압축파일을 실행해서 보시면 알꺼라 생각합니다.

카메라의 구조를 각각의 class 로 뽑으려고 하였으나, 생각처럼 안되네요...(위의 소스는 인터넷에서 추출한 소스입니다.

[소스코드]


protected void onDraw(Canvas canvas) {

// ...

		Paint paint = new Paint();
		paint.setColor(Color.RED);

		String s = "JavaCV for Android";
		float textWidth = paint.measureText(s);
		int w = getWidth();
		int h = getHeight();
		
		canvas.drawText(s, (getWidth() - textWidth) / 2, 20, paint);
		
		Paint pntR = new Paint();
		pntR.setColor( Color.YELLOW );
		pntR.setStrokeWidth(5);
//... draw ...
//... draw ...

}

전 이글을 보는 당신보다 한발짝 더 나아가고 싶습니다. !! 
저작자 표시 비영리 동일 조건 변경 허락

'Android > Android JavaCV / JNI' 카테고리의 다른 글

[JNI/NDK] Android Camera & Canvas Size  (0) 2011/06/06
[JNI/NDK] Android Camera ( YUV420 to RGB, RGBA)  (2) 2011/06/06
Android JavaCV - Setting & Quick Guide  (2) 2011/05/13
Android JavaCV  (1) 2011/05/12
Posted by 퓨림노

광고 한번만 클릭 부탁드립니다^^

포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 


Subject Android + JavaCV( Quick Guide )

최종 수정일 : 2011. 05. 12
작성자 : 퓨림노 ( vbflash@nate.com / jppark@vr.knu.ac.kr )



Posting 업데이트 내용 - 2011.05.13
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 
 

더보기

저작자 표시 비영리 동일 조건 변경 허락

'Android > Android JavaCV / JNI' 카테고리의 다른 글

[JNI/NDK] Android Camera & Canvas Size  (0) 2011/06/06
[JNI/NDK] Android Camera ( YUV420 to RGB, RGBA)  (2) 2011/06/06
Android JavaCV - Setting & Quick Guide  (2) 2011/05/13
Android JavaCV  (1) 2011/05/12
Posted by 퓨림노

광고 한번만 클릭 부탁드립니다^^

포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 


Subject Android + JavaCV

최종 수정일 : 2011. 05. 12
작성자 : 퓨림노 ( vbflash@nate.com / jppark@vr.knu.ac.kr )



Posting 업데이트 내용 - 2011.05.13
1. 공부할 내용 목차 작성
2. 공개를 할까 말까~~~ 고민중
    if( ( Rand()%100000000 ) > 9999 )
          공개;


안녕하세요^^ 
네번째 포스팅이군요~^_^;; 제블로그를 들어와서 많은 분들이 배너를 눌러 주셨더라구요....
정말로 감사드립니다.

그리고 지난번 주제에 이어서 NDK 를 계속 공부를 하고있었는데...커다란 진전은 없네요....
JNI 관련된 책도 계속 책 표지만 보는중(?) 이지만요...ㅎㅎ

원래 영상처리를 목적으로 JNI 를 보게 되었었는데...
처음 안드로이드를 접하는 그날부터 3일동안 JNI 를 이용해서 opencv 를 바로 쓰자!
라고 맘을 먹었지만...
역시 처음부터하면 하나하나 손을 많이 봐야하겠지요?

그렇게 삽질을 하는 동안, JavaCV 를 잊고 있었습니다. T_T...

한 몇일동안 또 삽질해서 'ㅅ' 돌려보았는데....
JavaCV 이지 "Android for JavaCV" 가 아니라서 조금 수정을 해야 하더라구요~

아마...포스팅을 하고나서 'ㅅ'/ 비공개를 하지 않을까 싶은데 ㅎㅎㅎㅎㅎ
일단 공부부터 다시!!

그럼 이제 시작 해볼까요!?(김동률씨 "오래된노래" 음악을 들으며~♡)

저작자 표시 비영리 동일 조건 변경 허락

'Android > Android JavaCV / JNI' 카테고리의 다른 글

[JNI/NDK] Android Camera & Canvas Size  (0) 2011/06/06
[JNI/NDK] Android Camera ( YUV420 to RGB, RGBA)  (2) 2011/06/06
Android JavaCV - Setting & Quick Guide  (2) 2011/05/13
Android JavaCV  (1) 2011/05/12
Posted by 퓨림노