Android에서 OpenCV를 시작하기전에…

OpenCV란? 컴퓨터 비전 애플리케이션을 빠르게 제작할 수 있게 도와주는 라이브러리입니다. 계산의 효율성과 실시간처리(Realtime-processing)에 중점을 두고 설계되었습니다. 자동차 번호판 인식, 얼굴 인식, 공장에서의 제품 검사, 의료 영상 처리, 카메라 켈리브레이션, 스트레오 비전, 로보틱스 등 다양한 분야에서 쓰이고 있습니다. 컴퓨터 비전이란? 컴퓨터 비전은 컴퓨터가 디지털 이미지나 비디오를 통해 높은 수준의 이해를 얻는 더보기…

글쓴이 Charlezz,

SingleLiveEvent로 이벤트 처리하기

AAC lifecycle컴포넌트의 등장과 함께 MVVM패턴이 다소 변경되었습니다. 기존의 방식은 다음 그림과 같습니다. Activity와 ViewModel의 의존성을 분리하고 ViewModel은 Navigator를 이용하여 Activity에게 이벤트를 전달합니다. Navigator의 구현체는 보통 Activity가 되곤했었습니다. BaseObservable을 상속받아 ViewModel을 만들면 데이터바인딩 라이브러리와 궁합도 잘맞습니다. 그런데, AAC ViewModel을 사용하고 부터는 이 패턴을 사용할 수 없게 되었습니다. Caution: A ViewModel must never reference a 더보기…

안드로이드 카메라 스트림 동시에 여러개 사용하기

안드로이드 카메라 스트림 동시에 여러개 사용하기 이 포스팅은 다음과 같은 내용을 포함합니다. 하나의 카메라로 여러개의 스트림을 동시에 사용하는것 하나의 캡쳐 리퀘스트로 다른 속성을 가진 타겟들을 결합하는것 출력타입, 출력사이즈, 하드웨어 수준을 선택하고 조회하는 방법 SurfaceView와 ImageReader의 Surface를 셋팅하고 사용하는 방법 여러개의 카메라 스트림을 사용하는 사례 카메라를 사용하는 앱은 두개이상의 스트림을 동시에 더보기…

DataBinding을 사용시 TextView의 텍스트가 변경되지 않는 경우

LiveData와 DataBinding을 이용하여 동적으로 TextView의 Text를 변경하는 로직을 적용했습니다. 예를들면, “Hello World” 를 “Hello Charles”는 것과 같이 단순한 변경이였습니다. <?xml version=”1.0″ encoding=”utf-8″?> <layout xmlns:tools=”http://schemas.android.com/tools” xmlns:app=”http://schemas.android.com/apk/res-auto”> <data> <variable name=”viewModel” type=”com.charlezz.MainViewModel”/> </data> <TextView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”@{viewModel.text}”/> </layout> class MainViewModel: ViewModel (){ val text = MutableLiveData<CharSequence>().apply{ text.value = “Hello World” } fun changeText(enabled:Boolean){ 더보기…

글쓴이 Charlezz,

[OpenGL] 12. GLSurfaceView와 Camera2로 카메라 영상 그리기

GLSurfaceView with Camera2 GLSurfaceView로 카메라 영상을 나타내는것은 MediaPlayer로 동영상 플레이어 만드는 법과 비슷합니다. 기본적인 흐름은 이렇습니다. Note:카메라를 사용하기 위해 메니페스트에 해당 퍼미션 사용을 선언하고,  런타임 퍼미션을 체크합니다. 카메라를 열고 프리뷰세션을 만들어 캡쳐리퀘스트를 반복적으로 수행하는것은 이전 포스트인 카메라2에서 확인하실 수 있습니다. 이번 포스트의 핵심은 GLThread에서 생성한 텍스처를 이용하여 Surface를 생성해내는 것입니다. 먼저 Texture를 더보기…

글쓴이 Charlezz,

Camera2 Basic 소스 살펴보기

  카메라 Android의 카메라 HAL (Hardware Abstraction Layer)은 Camera 2의 상위 수준의 카메라 프레임 워크 API를 기본 카메라 드라이버 및 하드웨어에 연결합니다. 카메라 서브 시스템은 카메라 파이프 라인 구성 요소에 대한 구현을 포함하는 반면 카메라 HAL은 이러한 구성 요소의 버전을 구현하는 데 사용할 인터페이스를 제공합니다. 구조 다음 그림과 목록은 HAL 더보기…

안드로이드 VectorDrawable 알아보기

VectorDrawable 이전 포스트에서 Vector 이미지 포맷을 이용했을때의 장단점에 대해서 알아보았습니다. 이번 시간은 안드로이드 리소스인 VectorDrawable에 대해서 알아보도록 하겠습니다. xml 파일에서 <vector> 요소를 정의하는것을 통해 벡터 그래픽 방식의 drawable 파일을 생성 할 수 있습니다. Notice: 다시 그리는 퍼포먼스의 최적화를 위해 각 VectorDrawable에  대해 하나의 비트맵 캐시가 생성됩니다. 따라서 동일한 VectorDrawable을 참조한다는 것은 더보기…

Vector 이미지 포맷 이해하기

Vector 이미지 포맷 안드로이드 기기는 다양한 화면 크기, 모양 및  밀도로 제공됩니다. 그래서 각 스크린에 맞는 리소스를 준비하는것은 까다롭기 마련이죠. 벡터를 이용한다면 화질손실 없이 화면 밀도에 맞게 크기를 조정할 수 있습니다. 또한 비트맵 대신 벡터 리소스를 사용하면 APK 사이즈가 줄어듭니다 비트맵 이미지와 벡터 이미지의 차이 대부분의 이미지 형식 (png, jpeg, 더보기…