QT 총 정리

SangHoon Lee·2020년 7월 2일
2

QT를 시작하면서 MFC 이후로 처음 GUI를 만들어서 프로그래밍 하는 것 이었기 때문에 많은 어려움이 있었다.

정리하자면, QT로 만든 내 프로그램은 딥러닝 부분 과 opencv 연동한 것을 제외하고, 전부 다 reference에서 직접 함수 원형을 통해 코드를 구현하고, 머리를 쥐어짜면서 코딩을 했던 것 같다. 아무것도 모르는 상태에서 시작했고, 그 결과 지금은 어느정도 다 자유롭게 구성 할 수 있게 되었고, Classification , Detection , Mask-R-CNN 에 대해 오픈소스를 가져오긴 했지만, Classification 과 Mask-R-CNN은 정말 많이 바꾸어서 내 프로그램에 필요한 기능에 맞게 구성하였기 때문에 내부안에 함수가 무엇을 의미하고, 어떻게 작동하는지에 대한 설명을 하기에 부족함 없이 스스로 할 수 있다고 생각한다.
처음에는 그림판 그리는것도 힘들었는데, 결국 저번 테트리스 작품 만들었을 때 처럼 좌표 값을 다루는거라 잘 이해가 되었다.
ROI 역시 reference를 잘 참고하였고, 어떻게하면 메모리를 덜 잡아먹을까 고민하다가 매트릭스의 zeros 라는것을 쓸 수 있다는것을 알았고, 매트릭스 자체가 클래스이기때문에 끌어 쓸 수가 있었다. 그래서 0배열로 모두 초기화 한 다음에, 그 위에 drawing을 해서 그 부분을 덮어서 상대가 어디에 관심있는지 찾을 수 있게 하였다.

지금도 물론 잔버그는 많고, CPU 사용률은 난리도 아니고, 메모리 역시 돼지마냥 엄청 먹고 그런 프로그램이지만, 최적화랑 잔버그를 잘 처리하고 레이블링까지 할 수있게 된다면, 정말 좋은 영상 툴 프로그램이라고 생각한다.

코드길이는 대략 2200줄 정도 나온 것 같다.
이거 마저도 QT라서 정말 짧게 나온 것 이다.
만약에 MFC나, 하드코딩으로만 짰더라면 확신하는데 만단위의 줄이 나왔을 것이다.
다 라이브러리에서 제공 해 주고 끌어쓰기 편하게 만들었기 때문에 이렇게 된 것이라 생각한다.

이렇게 프로젝트들을 하다보면 느끼는것이 내가 아무리 하드코딩으로 최적화하고 열심히 짜보아도 오픈소스를 이기기엔 힘들다. 라는 것 이고, 그렇다고 오픈소스를 많이쓰면 과연 이게 내 실력일까 라는 것 도 있다.

그렇기 때문에 하드코딩에 대한 능력도 많이 중요하고, 오픈소스를 잘 활용하는것도 많이 중요하다고 생각한다.

프로그래밍을 하다보면 정말 많이 해본사람 과 정말 안해본 사람의 차이는 확연히 나타난다고 생각한다.
그게 어디에서 나타나는가면, 많이 해본사람은 과거에 막혔던 경험을 바탕으로 문제를 풀이하거나, 바로 노트로 그림을 그리거나 구상하거나 등 여러가지 노하우가 들어나는데 경험이 많이 없다면 그냥 뭘 해야할지 모르니까 구글에서 찾아보고 남들이 했던것도 보고 그러는 것 같다.
물론 이 두 경우는 내 이야기이다.. -_-..

이 글의 결론은 QT가 이제 마지막 단계에 왔으니 속 시원하게 이 프로젝트동안 있었던 일들을 바탕으로 편하게 정리하고 다음 단계에 더 좋은 결과를 낼 수 있게 마무리 하겠다 라는 다짐을 하기위해 글을 작성 해 보았다.

profile
C++ 공부하고있는 대학생입니다.

0개의 댓글