당시 서버 응답이 이쁘게 와서 캡쳐했었던 사진이다. 지금은 30만이 넘는 데이터가 학습되어 있어 거의 완벽하게 온다. 서버개발자님에게 하트 뿅~! 그리고 항상 도와주시는 차장님에게 하트 뿅b(신기하게도 막힐때면 오셔서 해결해주신다 ㅋㅋ) 개발 도중 심각한 이슈 2개를 겪었다. 이는 open cv를 사용해 카메라를 키기만 하면 10초 뒤에 버퍼가 터져 앱이 에러도 없이 종료되는 이슈와Mat 자료구조의 주소를 전달하는데 있어 jni기법을 사용하여 일어나는 주소값 변화에 있어 대응하지 못하는 이슈를 겪었는데차장님이 옆에 붙어서 해결해 주셨다. 아마 도와주시지 않았으면 이 이슈는 혼자 해결하는데 정말 어려움이 있었을꺼 같다.(쓰면서도 땀 줄줄 후자 이슈는 정말 답답했다. 원인을 찾는데도 오래걸렸다. 둘다 에러로..
객체 추출 테스트를 하며 아직도 기억에 남는 이미지 몇장 중 나에게 꽤나 오랜 시간을 고민하게 만든 사진이 있다.. 신기하게도 이진화를 하면 반쪽은 하얀색 반쪽은 검은색이였던 이미지이다. 골치아픈 예다. 위의 사진은 빛의 세기 때문에 이진화 하면 흰색 검은색으로 방석이 반반이 이쁘게 나눠진다.(이진화 사진을 넣으려했으나 끔직..) 이 사진때문에 덕분에 나는 알고리즘의 대부분을 작성하고 버렸다. 아마도 차장님이 도와주시지 않았다면 아직도 쩔쩔매고 있을지 모른다. 하지만 결국은 위사진처럼 객체를 추출하는데 성공했다 위 사진은 성공했을 때 당시 사진으로 깔끔하지 못하지만지금은 좀더 깔끔하게 추출할 수 있다. 위 사진도 생각외로 사진 아래 부분 중 왼쪽은 어둡고 오른쪽은 빛이 강하게 들어와나를 괴롭혔다. 하지만..
그렇다. 나는 아주 잘 찾고 있다. 객체를 말이다.....(물론 윗 사진 처럼 개선 알고리즘이 더 좋지 못한 효과를 낼때도 있었다)첫 객체를 가방이라도 단정 짓지는 않았지만 가방 사진이 많은 이유는 주변에 많이 보여서랄까?(하하 쇼피..ㅇ..모..) 요런 것도 찾아 내고 ? 사물이 겹쳐 있어도 어설프게 나마 찾아낸다. 알고리즘을 개선해 나갔지만 어느정도 한계에 부딪히기 시작한다. 그냥 grayscale에서 이런 것을 검출하는 것이 너무 어려웠기 떄문이다. 그래서 과감히 기존의 알고리즘을 버렸다.(위 사진은 기존의 알고리즘을 버리고 검출된 객체이다) 물체의 특징을 생각하며 어떤식으로 검출이 가능할까 고민해본다. 편지 봉투 검출 (역시나 완벽하지는 않다)하지만 수 많은 테스트를 해보며 물체를 보면서 이건 채..
그림으로 보는 안드로이드 객체 추출 객체추출을 위해 Android4Opencv sdk를 공부하였다. Open Cv가 대부분 파이썬, C++로 짜여져 있는 예가 대부분이라 하나하나 자바로 변환해가며 코딩하였다. (c++로 코딩할껄 ..) 구체적으로 어떤 방식을 통해 구현하였는지 또는 소스코드는 쓰기 어려울 것 같습니다.(미리 양해를..) 일주일 정도 공부했을때 나온 성과이다. 생각외로 잘 나오지 않았는가-? GrabCut이라는 알고리즘을 사용해서 구현했던 걸로 기억한다.하지만 GrabCut특성상 안드로이드에서 사용하기엔 너무나도 오랜 시간이 걸렸고, 무엇보다 전경과 후경을 구분하기 위한 선이 필요했다.(논문을 찾아보니 저런 구분을 위한 선을 자동으로 구하는 알고리즘이 있어 써봤지만 그래도 오래걸리거나, 부..
보통의 경우는 안드로이드에서 주어지는 AlertDialog나 xml로 필요한 뷰를 만들고 인플레이트한뒤 뷰에서 해당 innerView 들을 찾아서 사용하곤 했었는데 어느순간 불편한 부분도 있었고, keyboard 같은 것들이 마음대로 움직이지 않아서 하드코딩해야 하는 부분이 많았다. 불편해서 어느 순간부터 커스텀 다이얼 로그를 만들어 사용하고 있는데 꽤나 편리한거 같아다른 분들과 공유하고싶다! (물론 잘 만들어진 머터리얼 다이얼로그 사용하는게 제일 좋긴하다...하지만 직접 만들어 사용한다는 것에 의의를 두자....) 매우 허접함으로 꼭! 안드로이드를 처음 접하는 분들이 보셨으면 좋겠다. 여기서 만들어 볼려하는 커스텀 다이얼 로그는 아주 간단하게 텍스트를 입력 받아 추가 시켜주는 기능이다.[디자인은 보지말..
http://nanamare.tistory.com/8 에서 이벤트 버스 대신 RxJava를 사용하여 구현 해봤다. 그래서 실제 프로젝트에 적용을 해보았다 (어느정도 검증은 되었지만 걸리면 죽을지도 모름 XD) 봉사 프래그먼트에서 원하는 세부사항을 선택하여 적용하기 버튼을 누를 때 RxEventService 매니저가 작동하여 화면을 갱신하는 모습이다. 이부분 뿐만 아니라 많은 곳에서 유기적으로 변화해야할 데이터면서 데이터간의 통신이 애매한 경우(분명 방법은 있겠지만 초보자인 나에게는 어렵다)에는 RxEventService 매니저를 옵저버처럼 달아뒀다. 몇 번 사용하다보니 중독되서 여기저기 달아두고 instanceof로 타입만 확인만 하고 사용하는 편인데 좋지 못한 개발습관만 늘어가는 느낌이 들지만 정말(?..
필자는 Fragment 끼리간의 통신에 있어 Flagment -> Acitivity - > Flagment가 너무 불편해서 이벤트버스를 이용하여 해결한 적이 있다. Rx를 사용한다면 이벤트 버스를 사용하지 않아도 된다. RxJava Class Observable : 이벤트를 발생시키는 주체Subscriber : 이벤트를 전달 받는 객체PublishSubject : 구독한 시점으로부터 발생되는 이벤트를 계속 전달 받는다.
빙글 면접이 다음주 월요일로 다가왔다. 그래서 안하던 공부를 좀 해보려구 한다! 누군가 Intent에 대해 설명해주세요. 라고 물어봐서 안드로이드 4가지 컨포넌트간에 작업 수행을 위해 정보를 전달하는 역할을 하고있습니다. 암시적, 명시적 인텐트로 구분되며, 일반적으로 앱 내에서 컴포넌트 간의 호출은 명시적 인텐트를 많이 사용합니다. 그 이유는 클래스명을 알수 있어 지정된 클래스명의 액티비티에서만 실행되기 때문입니다. 라고 대답한적이 있다. 다소 여러모로 아쉬운 대답이다. 인텐트는 액티비티 시작, 서비스 시작, 브로드캐스트 전달등 많은 상황에서 사용된다. 안드로이드에서 A액티비티에서 B액티비티를 시작할때 아마 한번쯤은 왜 인텐트를 사용하는지 고민을 해봤을 것이다 Intent는 일종의 메시지 객체이다. 여러..
APK파일은 프로젝트 -> app -> build ->outputs->apk 에서 확인 할수있다. 그럼 이런 APK파일은 어떻게 만들어지는 것일까-? 앞에 그림을 보면 상당히 복잡한 구조로 APK 파일이 만들어지는 것을 확인할 수 있다. 천천히 단계별로 살펴보자. 맨처음은 컴파일 단계로 앱 내의 리소스 관련 파일과 AIDL(android interface description language의 약어로 안드로이드에서 프로세스 사이에 통신이 필요한 경우 필요한 인터페이스를 정의하는 언어 일반적으로 서로 다른 앱에서 통신이 필요한경우 자주 사용 한다.) 파일들이 .java로 각각 aapt 툴과 aidl 툴에 의해서 변환되어 Application Source Code에 해당되는 .java 파일들과 함께 자바 컴..