전체 글
-
[퍼즐:03] 퍼즐 조각 외곽선을 각 모서리로 분할개발 2023. 8. 7. 00:26
외곽선과 코너를 찾은 후 할 일은 각 외곽선을 4개의 모서리(엣지)로 나누는 것이다. 이 작업은 생각보다 간단했다. 코너 4개의 번호를 0, 1, 2, 3 붙인다. (0번과 3번은 대각선 관계에 놓이도록 지정한다.) 그리고 4개의 점으로 만드는 직사각형을 설정한다. 모든 외곽선 점을 순회하면서 직사각형의 어느 선분에 가까운 점인지 판단한다. 만약 점과 선분과의 거리가 멀다면 이전 점의 정보를 가져와서 사용한다. 외곽선이 연속해서 나타난다는 점을 이용했다. 흰색 점이 선분에서 먼 점이다. copilot의 도움으로 어렵지 않게 구현할 수 있었다. https://github.com/jkwchunjae/JigsawPuzzleSolver/commit/590465af0fc7f16a16742c25803054fd79f..
-
[퍼즐:02] 퍼즐 조각 외곽선에서 코너 검출개발 2023. 8. 6. 22:37
chat gpt에 물어보니 두가지 알고리즘을 소개해줬다. OpenCV를 사용하여 이미지에서 코너를 찾는 방법은 주로 "코너 검출(Corner Detection)" 알고리즘을 활용합니다. 여러 알고리즘 중에서 가장 유명하고 효과적인 알고리즘은 "Harris 코너 검출"과 "Shi-Tomasi 코너 검출"입니다. 이들 알고리즘은 이미지의 코너 지점을 감지하는 데 사용됩니다. (chat gpt가 답변해줌) 이러저런 테스트 결과 "Shi-Tomasi" 알고리즘을 사용을 선택했다. 인자의 의미가 쉽게 느껴졌다. # outline = 검정 배경에 윤곽선만 표시한 이미지 corners = cv2.goodFeaturesToTrack(outline, maxCorners=4, qualityLevel=0.01, minDis..
-
[퍼즐:01] 퍼즐 조각 외곽선 추출개발 2023. 8. 6. 18:10
https://hellojkw.tistory.com/entry/직소-퍼즐-맞추는-프로그램-단계 직소 퍼즐 맞추는 프로그램 단계 퍼즐에 번호 쓰기 퍼즐 스캔 여러 퍼즐 이미지에서 각각의 이미지로 절단 퍼즐 조각에 써있는 번호 인식 퍼즐 조각에서 Outline 추출 Outline에서 Edge 추출 Edge Normalize Hole, Head 쌍 만들기 Piece에서 그 hellojkw.tistory.com 퍼즐을 맞추기 위한 단계 중 핵심은 사진을 디지털 퍼즐 객체로 바꾸는 것이다. 그 첫 번재가 외곽선을 추출하는 것. Canny 라는 알고리즘이 대표적인 윤곽선 알고리즘인데 잘 모르겠어서 접어뒀다. 배경과 전경(사물)을 분리하는 알고리즘으로 GrabCut을 알게 되었다. 속도가 너무 느리기도 하고 퍼즐에 ..
-
일기장 검색 관련 변화HelloJkw 개발 2023. 6. 25. 12:35
검색 기간 설정 숏컷 전체, 최근 1년, 5년, 10년 버튼을 만들었다. 복수 단어 검색 기능 띄어쓰기로 구분해서 여러 단어를 넣으면 단어가 모두 포함되어 있는 일기를 검색한다. "축구 월드컵" 이라고 검색하면 일기에 "축구", "월드컵" 두 단어가 모두 들어가 있어야 검색된다. 성능 개선을 위해서 약간의 구현을 했다. 각 단어를 각각 검색해서 겹치는 일기를 추출하면 가장 간단하고 구현도 쉽지만, 어차피 겹치는 일기만 추출할 것이라면 검색 범위를 줄이는 것이 효율적이라고 생각했다. 첫 단어를 먼저 검색해서 유효한 날짜 범위를 줄일 수 있길 기대했다. 아래에서 설명할 TRIE 연도별 분리기능과 결합해 성능 개선이 있을 듯. (물론 체감 효과는 없음..ㅋ) 검색 TRIE를 연도별로 분리 일기가 20년 치가 ..
-
[퍼즐:00] 직소 퍼즐 맞추는 프로그램 단계개발 2023. 3. 2. 23:36
퍼즐에 번호 쓰기 퍼즐 스캔 여러 퍼즐 이미지에서 각각의 이미지로 절단 퍼즐 조각에 써있는 번호 인식 퍼즐 조각에서 Outline 추출 Outline에서 Edge 추출 Edge Normalize Hole, Head 쌍 만들기 Piece에서 그래프 생성 그래프 풀이 퍼즐 조각 회전 전체 퍼즐 그림 완성 이렇게 단계를 거치면 퍼즐 푸는 프로그램을 만들 수 있을 것 같다. 재미있어 보이는 것 부터 해나갈 예정. 각 단계를 할 때 마다 글도 쓰고. 화이팅! https://github.com/jkwchunjae/JigsawPuzzleSolver
-
2022 월드컵 내기 결산카테고리 없음 2023. 1. 20. 23:48
월드컵 내기 결산 ! 많은 분들이 호응해 주셨습니다. 참가해 주셔서 감사합니다. 2018 내기때 가장 힘들었던 부분은 내기 후 상금 분배였다. 한 분 한 분 계좌이체 하느라 힘들었기 때문에 이번엔 카톡 친구 송금 기능을 사용했고, 모든 참가자들이 나에게 카톡 친구신청을 하고 참가비를 입금하는 방식으로 시작했다. 공지사항은 카카오톡 오픈 카톡방을 사용했다. 익명으로 참여할 수 있어서 좋았다. 참가자들끼리 서로의 신상은 공개하지 않으면서 월드컵 얘길 할 수 있고, 이 채널에서 만큼은 밤 늦은 시간 축구얘길 해도 괜찮은 느낌이라서 편했다. (일단 나는..ㅋㅋ) 24분이 참가해주셨다. 1등은 24,000 원 이득을 봤고, 24등은 13,000 원 손해를 봤다. 상금 계산 시 600원 반올림 정책으로 인해 주최측..
-
2022 월드컵 내기 규칙카테고리 없음 2022. 9. 1. 00:57
https://hellojkw.com/worldcup 의 2022 월드컵 내기의 규칙을 설명합니다. (필독) 지난 2018 내기와 크게 달라진 점은 상금 계산 방법입니다. 전반적으로 비슷하나, 관리자인 제가 한사람한사람 분배를 해야 하기 때문에 너무 귀찮았습니다. 그래서 600원을 기준으로 반올림 하기로 했습니다. 예시 결과값 상금 설명 12,300 12,000 600원 미만은 절삭 12,599 12,000 600원 미만은 절삭 12,600 13,000 600원 부터 올림 12,999 13,000 600원 부터 올림 여기에서 주최측의 약간의 수익이 발생할 수 있습니다. 서버 운영비로 잘 사용하겠습니다. 참가비는 2만원입니다. 3라운드를 해야 하기 때문에 3만원을 받으면 깔끔하긴한데, 굳이 그럴필요 없을 ..
-
Blazor에서 typescript 디버깅HelloJkw 개발 2022. 3. 6. 17:03
typescript로 js파일을 만들었다. wwwroot/js에 kakaomap.js와 kakaomap.js.map 파일이 생겼다. 크롬 개발자 도구의 js파일에서 breakpoint를 찍었다. 그랬더니 ts파일을 찾을 수 없다는 메세지를 받았다. Could not load content for https://localhost:44333/_content/_scripts/kakaomap.ts (HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE) 방법 1. 그냥 js로 디버깅 이럴 경우 그냥 js로 디버깅 하는 것도 방법이 될 수 있다. .map 파일을 생성하지 않으면 된다. tsconfig.json 파일에서 sourceMap 값을 false..