개발일지 18

프로젝트 오일러 Q10 화폐 지불 (미해결)

최근 도전하는 문제들 중에 되게 좋은 문제라 생각돼서 소개해본다.문제: 링크(프로젝트 오일러) 다른 문제들은 어찌저찌 풀었는데, 얘는 골때린다. 도대체 해결한 사람들은 어떻게한거지 ㅋㅋ 계수의 합을 구하는 것이기 때문에 수식구하고 m=1 때려주고 a_9 곱해주면 되는건데 젠젠 모르겠다. 첫번째 접근 수학적 귀납법규칙성이 있다고 가정하고, 말도안되지만 귀납적 추론으로 아래 와 같은 공식으로 생각하여 값을 넣었다. 당연히 틀림 ㅋㅋ 두번째 접근 연립방정식 미지수 9개미지수 9개면 9개 수식이 필요하다. 즉 9개의 정답이 필요한데...1개는 이미 나와있다고 치고.. 남은 8개를 구하는데 이미 그 수가 상식을 뛰어 넘을 수 이기 때문에 아마 다른 접근 방식이 필요하다. 세번째 접근 규칙성 찾기할 수 있는대로 1..

React(리액트) - 0(시작)

파이썬 해야되는데 잠시 일탈 좀 했다.일탈하고 다시 정신차리고, 막상하려니 노잼이라서, 재미 주입시키기 위해서 다른 걸 해보려한다.기존에 웹관련해서 자바 - 스프링부트를 경험하고 있었는데, 중간에 잠시 하차했다. (이것도 다시 시작해야하긴함 ㅎㅎ)근데 이번엔 리액트에 대해서 좀 알아보고 개발해보려한다. 리액트는 메타에서 만든 프레임워크(라이브러리)이고,   JavaScript, TypeScript를 지원한다.그래서 사용하기 위해서는 npm? npx가 필요하다. 그래서 그냥 Node.js를 한번설치해주면 따라갈 수 있다.설치에 앞서 자바스크립트를 좀 알아가야겠다. 목표는 아직 없다 리액트리액트해서 리액트를 해보는거지.이름 들어보기만했고 해본적 없으니 그냥 해보는거다. 환경 세팅Node.js, Visual ..

개발일지 2024.04.29

파이썬 - 0 (목표설정)

학부생때 인공지능 강의를 수강한적 있는데, 그때 문법도 잘 모르는 상태에서 그냥 복붙 후 수정하면서 강의를 따라갔는데, 강의 내용을 복기하는 것을 기본으로, 텐서플로우 활용 정도 고려중이다. 파이썬으로 활용할 수 있는 것들은 인공지능 뿐만아니라 크롤링, 자동화 등 무궁무진하기 때문에 공부량이 좀 넓다. 일단 개인적인 목표는 1. 인공지능 수업 복기 2. 텐서플로우 체험 3. 크롤링 네이버 뉴스 수집하고 많이 언급되는 키워드 10개 추리는 것 (실시간 검색어 같은 느낌) 위 세가지 정도이다. 이번에는 아마 널리 알려진 기술이고 최신기술도 아니기 때문에 소요시간은 지난 안드로이드처럼 2주나걸리지는 않을 것이다. 1주내 컷내겠음.

코틀린 - 카메라 필터 앱 만들기 - 8 (UI 디자인)

UI 디자인을 해야하는데, 막상 일일히 그리려하니 초라해서 검색해봤다. figma 라는 디자인 프로그램이 유명하다더라.. 그래서 회원가입하고 Free로 project 만들고 Android UI를 가져왔다. 오 좀 이쁜데? 하고 쓸려고했더니 쓰는법을 모르겠는거임.. 그래서 찾아봄. 찾아보니 figma 내부에 plugin으로 안드로이드 vector drawable 이라는 친구를 추가하라는거임 그래서 추가하고 각 객체들을 일일히 따왔다.. 굉장히 많아졌고 현재 디자인중인데 이거 색깔이 왜이러지 ㅋㅋ 그래서 또 검색했고 해결함 ㅎㅎ 이제 좀 카메라 앱 같다 ㅇㅈ? 이후 OpenCV 적용하고 버튼에 click 이벤트 적용했다. 카메라 전환이랑 CannyFilter만 넣었음. 촬영사진은 작게 나온다. 화면또한 작다..

코틀린 - 카메라 필터 앱 만들기 - 7 (CameraX + OpenCV)

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 넣..

코틀린 - 카메라 필터 앱 만들기 - 6 (OpenCV)

CameraX 때문에 진짜 개고생을 많이 했다.. 알려진 자료도 별로 없는 건 기본이었지만. 데이터 처리 후 데이터를 가공한다는 점 때문에 알아할게 너무 많았다.. (이정도로 팔줄은 몰랐음.) 그래서 opencv에 있는 기능을 이용하려 한다. 찾으니 바로나왔다. (링크) 적용하니 바로 잘됨 ㅡㅡ;; 그리고 두번째 난관이 찾아왔다. 90도 꺾인 상태와 전체화면이 아니게 출력되었다. 그래서 열심히 검색했다. 결과적으로 풀스크린해결방안은 landscape로 고정하는수 밖에 없었고 회전문제는 기본적으로 생각했던 방법으로 처리를 해야만했다. 솔루션은 놀랍게도 원본 라이브러리 수정을 해서 현재 상태를 전달받는 방식으로 진행하더라.. 아무튼 ㅋ 실시간 카메라에 canny 적용 완료. 근데 저거 이용할거면 걍 코틀린 ..

코틀린 - 카메라 필터 앱 만들기 - 5 (CameraX + OpenCV)

이후 일단 kotlin에서 동영상에 대해 Canny 처리를 할 수 있도록 만들어봤다. 첨알았는데 mp4 읽을려면 ffmpeg dll이 필요해서 그것까지 load했음..(코덱 깔려있으면 당연히 알아서 될줄알았지..) 자 그럼 다시 생각해보자. 이제 뭘해야할까? 위에서 본것처럼 영상 처리과정은 다음과 같다 ViewFinder에 전달할 중간계층이 필요했었다. ㅋㅋ 깃허브에 올라와있는 내용은 원본영상 위에 face를 추적하고, 그위에 덮는 느낌이지만, 나는 원본영상을 수정해야했다. 즉 필터 적용한 영상을 보여줘야한다.. adapter같은 역할을 해야하는... ㅋㅋ 아 생각이 많아진다고.. 방법은 두개인것같다. 1. 처음부터 출력될 이미지데이터가 레퍼런스(참조)라면 그대로 변환하면서 자동으로 전달되게한다. - 그..

코틀린 - 카메라 필터 앱 만들기 - 4 (IntelliJ + OpenCV)

앞서 말한 것과 같이 일단 openCV가 정상적으로 동작할 수 있는 펑션들을 찾고 적용해보고 진행해기로 했다. 또 환경세팅하는 것 때문에 머리깨질뻔했다. 그래도 근 며칠간 안드로이드때문에 깨진시간보다는 빠르게 진행되었다. 역시 삽질은 레전드다.. 일단 나는 아래와 같이 프로젝트를 생성했다. 인텔리제이랑 안드로이드 스튜디오 왔다갔다해보니 똑같은것 같아서 편했다. 적응이 좀빠름. ㅋ 여튼 저렇게 환경세팅했고, 빌드 시스템이 세종류였는데 Gradle로 하는사람도있을 수 있었다. 근데 뭐 나는 펑션 연습만 하는 것이기 때문에 그대로 진행했다. (사실 왔다갔다 다해봤고 결론지었음) 그렇게 시작하고 이번에는 import module이 아닌, project structure로 들어간다. 그리고 modules 에 들어..

코틀린 - 카메라 필터 앱 만들기 - 3 (CameraX+OpenCV)

3. 카메라 필터(OpenCV) 추가 1,2번 과정을 거치면서 CameraX와 OpenCV라이브러리를 추가하는 방법을 알아봤다. 두 사례를 모두 적용한다. 아. 참고로 안드로이드 스튜디오 22.01 버젼에서 CameraX적용은 쉬우니까 지금까지 잘 해왔다면 문제없이 적용할 것임. 이제 실시간 필터기능을 추가하기 위해 우리는 실시간 촬영데이터의 근원이 어디서 일어나는지 알아야한다. 코드를 한번살펴보자. 아마 이 부분에서 카메라를 송출을 세팅해주는 부분이 있을 것인데. 일단 나는 전면 카메라 사용을 위해 DEFAULT_FRONT_CAMERA로 변경했다. 최종적인 카메라 어플을 만들기 위해서는 버튼으로 만들어야할 것임 ㅇㅇ private fun startCamera() { val cameraProviderFu..

코틀린 - 카메라 필터 앱 만들기 - 2 (OpenCV 세팅)

2. 코틀린 안드로이드 OpenCV 적용해보기 문제가 엄청 많은 OpenCV 세팅이다.. Android studio는 android-studio-2023.2.1.23-windows을 다운받아사용했고 AGP 버젼 8.4에 Gradle은 8.3을 사용하고 있었다. 그런데 난관이 너무나도 많았다. 1. OpenCV Module 추가 - import module으로 추가하여 사용하면됨 2. import module시 에러가뜬다. - 미해결이고 - 그래도 배운게 많았다. AGP 버젼수정은 project내의 build.gradle을 통해 수정할 수 있다. - 문제점이 너무나도 많았고, 검색하여 참고할 수 있는 내용들은 대부분 과거의 버전이기때문에 다운그레이드하기로 결정했다. - 근데 문제는 또 ... 다운그레이드하..