CameraX를 오늘 좀 트라이 해보기로했다.
우선 깃허브에 올라와있는 얼굴 탐지 코드를 분석해보려한다. (링크)
집중적으로 볼 부분은 Analyzer 사용과 상속한 부분이다.
override fun analyze(imageProxy: ImageProxy) {
// 제공되는 이미지 형식 ImageFormat.YUV_420_888
val buffer = imageProxy.planes[0].buffer //Y값 List를 Buffer에 담음
val yData = buffer.toByteArray() // ByteArray로 변환
val yMat = Mat(imageProxy.height, imageProxy.width, CvType.CV_8UC1)
yMat.put(0, 0, yData) //y data 넣기
val tyMat = yMat.t() //행과 열 전치(바꿈)
yMat.release() //y 데이터 제거
val facesRects = MatOfRect()
lbpCascadeClassifier?.detectMultiScale(tyMat, facesRects, 1.1, 3)
listener(facesRects.toArray(), imageProxy.height.toFloat(), imageProxy.width.toFloat())
tyMat.release()
facesRects.release()
imageProxy.close()
}
위 코드만 봐도 알 수 있듯 그냥 기존 이미지를 분석하여, 그위에 새로운 faceRect를 그려주려는 느낌의 코드로 밖에 보이지 않는다.
그래서 Surface쪽을 건드리는 방향으로 접근하는 것이 맞는 것 같다는 판단을 했다. 그러나 열심히 구글링해도 진전이 1도 없어서 여기까지만 하려한다. (사실 CameraX에 대한 의욕이 접어들었음.)
다음 진행할 것은 opencv Camera 기능으로 영상 촬영 및 저장 기능을 구현하고 필터 추가하는 방향으로 진행할 계획이다.
이상..
참고
1. SurfaceOutput(링크)
2. runOnUiThread(링크)
3. Camera Preview 캡쳐 구현 내용 관련 (링크)
4. 안드로이드 카메라 인터페이스 및 Bitmap 등등(링크)
5. 프리뷰 인터페이스 관련(링크)
6. OpenCV 함수 설명(링크)
7. 공식 OpenCV I(Android Development) (링크)
8.FullScreen 관련(링크1,링크2,링크3,맄으4
9. OpenCV Android 샘플 구현 (링크)
10. 회전변환(링크)
12. Preview 비율(링크)
13. opencv 카메라 연동 샘플( 링크)
14. CameraX Bitmap변경(링크)
15. YUV -> RGB 변환 (링크)
16. CameraX 설명 (링크)
17. 이미지뷰 사용하지 않고 비트맵 출력 (링크 )
'개발일지 > 코틀린(Kotlin)' 카테고리의 다른 글
코틀린 - 카메라 필터 앱 만들기 - 8 (UI 디자인) (1) | 2024.04.16 |
---|---|
코틀린 - 카메라 필터 앱 만들기 - 6 (OpenCV) (0) | 2024.04.16 |
코틀린 - 카메라 필터 앱 만들기 - 5 (CameraX + OpenCV) (0) | 2024.04.15 |
코틀린 - 카메라 필터 앱 만들기 - 4 (IntelliJ + OpenCV) (0) | 2024.04.15 |
코틀린 - 카메라 필터 앱 만들기 - 3 (CameraX+OpenCV) (0) | 2024.04.15 |