[안드로이드로 배우는 OpenCV] 최소 크기의 회전된 바운딩 박스 구하기

Prerequisite : 윤곽선 길이 구하기, 바운딩 박스 최소 크기의 회전된 바운딩 박스 바운딩 박스를 회전시켜 구할 수 있다면, 더 작은 사각형으로 도형을 감쌀수 있다. OpenCV에서는 회전된 바운딩 박스를 구하는데 minAreaRect() 함수를 제공한다. Imgproc.minAreaRect(contour) contour: 윤곽선 좌표반환값: RotatedRect 타입의 회전된 사각형 더보기…

[안드로이드로 배우는 OpenCV] 바운딩 써클 구하기

Prerequisite : 윤곽선 길이 구하기 바운딩 써클 바운딩 써클이란 윤곽선을 외접하여 둘러싸는 가장 작은 원을 의미한다. OpenCV에서는 minEnclosingCircle이라는 함수를 통해 바운딩 써클를 구할 수 있다. Imgproc.minEnclosingCircle(contour, center, radius) contour: 윤곽선 좌표center: 함수 호출 후 참조 가능한 도형의 중심점radius: 함수 호출 더보기…

[안드로이드로 배우는 OpenCV] 바운딩 박스 구하기

Prerequisite : 윤곽선 길이 구하기 바운딩 박스 바운딩 박스란 윤곽선을 외접하여 둘러싸는 가장 작은 사각형을 의미한다. OpenCV에서는 boundingRect라는 함수를 통해 바운딩 박스를 구할 수 있다. Imgproc.boundingRect(contour) contour: 외곽선 정보(좌표)반환값: 사각형 정보(Rect);(x,y,w,h) 정보를 포함 boundingRect함수를 이용하여 이미지내의 도형을 감싸는 예제를 살펴보자. 더보기…

[안드로이드로 배우는 OpenCV] 윤곽선을 감싸는 면적의 크기를 구하기

OpenCV에서 제공하는 함수를 통해 윤곽선이 감싸는 영역의 면적을 구하는 방법을 알아보자. 윤곽선을 감싸는 면적 구하기 Imgproc.contourArea(contour) contour : 윤곽선 정보(좌표)oriented(optional) : true면 윤곽선 진행 방향에 따라 부호 있는 면적을 반환. 기본값은 false반환값 : 윤곽선으로 구성된 영역의 면적 위 함수를 이용하여 더보기…

[안드로이드로 배우는 OpenCV] 윤곽선 길이 구하기

지난 포스팅에서 윤곽선 검출 함수 findContours() 를 통해 윤곽선을 검출하는 방법에 대해 알아보았다. 이 포스팅에서는 검출한 윤곽선 정보를 가지고 윤곽선의 길이를 구하는 함수에 대해서 알아본다. 윤곽선 길이 구하기 contour: 윤곽선 정보(좌표)closed: true면 폐곡선반환값: 윤곽선의 길이 arcLength 함수를 사용하는 가장 긴 더보기…

Migrating to Jetpack Compose – 테스트 하기

식물 세부 정보 화면의 일부를 컴포즈로 마이그레이션한 후, 아무 것도 손상되지 않았는지 테스트하는 것이 중요하다. Note: 실제 앱에서는 테스트 없이 레거시 코드를 다시 작성해서는 안된다. 또한 코드를 컴포즈로 마이그레이션하는 동안 테스트를 리팩토링하고 패스(녹색) 할수 있도록 유지해야 한다. Sunflower에서 androidTest 폴더에 더보기…

Migrating to Jetpack Compose – 테마 상호운용

컴포즈로 마이그레이션된 식물 세부 정보의 텍스트 콘텐츠가 있다. 그러나 컴포즈가 올바른 테마 색상을 사용하지 않는다는 것을 눈치챌 수 있다. 녹색을 사용해야 할 때 식물 이름에 보라색을 사용한다. 이 초기 마이그레이션 단계에서, 컴포즈에서 처음부터 Material 테마를 다시 작성하는 대신 View 시스템에서 더보기…

Migrating to Jetpack Compose – ViewCompositionStrategy

기본적으로 컴포즈는 ComposeView가 윈도우에서 분리될 때마다 컴포지션을 삭제한다. 이런 부분은 ComposeView가 프레그먼트내에서 사용될 때 여러가지 이유로 바람직 하지않다. 컴포지션은 Compose UI 보기 타입이 상태를 저장하기 위해, 프래그먼트의 View 생명주기를 따라야 한다. 트랜지션 또는 윈도우 트랜지션이 발생할 때 Compose UI 요소를 더보기…

Migrating to Jetpack Compose – 컴포즈 코드 내의 View

이제 식물 설명을 마이그레이션해 해보자. fragment_plant_detail.xml의 코드에는 화면에 표시할 텍스트를 XML에 알려주기 위해 app:renderHtml=”@{viewModel.plant.description}”이 있는 TextView가 있다. renderHtml은 PlantDetailBindingAdapters.kt 파일에서 찾을 수 있는 바인딩 어댑터다. 구현은 HtmlCompat.fromHtml을 사용하여 TextView의 텍스트를 설정한다. 그러나 컴포즈는 현재 Spanned 클래스를 지원하지 않고, HTML 형식의 더보기…

Migrating to Jetpack Compose – 더 많은 XML 코드 마이그레이션 하기

이제 UI에서 누락된 사항인 물주기 정보 및 식물 설명의 마이그레이션을 완료하는 것이 더 쉬워졌다. 이전에 수행한 XML 코드 접근 방식을 동일하게 살펴보면, 이미 나머지 화면을 마이그레이션 할 수 있다. fragment_plant_detail.xml에서 이전에 제거한 물주기 정보 XML 코드는 ID가 plant_watering_header 및 plant_watering인 더보기…