관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

OpenCV로 시작하는 컴퓨터 비전 3 - 객체 지향 잘 활용하기 본문

인공지능/컴퓨터 비전

OpenCV로 시작하는 컴퓨터 비전 3 - 객체 지향 잘 활용하기

huenuri 2024. 11. 7. 14:19

아침시간이 많이 지났지만 점심을 먹기 전에 컴퓨터 비전 공부를 하나 해볼 생각이다. 오늘은 오후에 다른 일정이 있어 공부를 많이 하지 못할 것 같다. 그래도 할 수 있는 만큼 해볼 것이다. 오늘의 목표는 3장까지 학습하는 건데 이에 못 미칠 수 있겠지만 한번 해볼 것이다.


 

 

 

객체 지향 잘 활용하기

 

객체 다루기

파이썬은 객체지향 언어다. 객체지향은 컴퓨터 비전 프로그래밍에 매우 유리하다. 다음은 객체지향 특성을 설명한다.

 

numpy.ndarry 클래스 형의 객체를 만들고 멤버 함수 적용하기

 

 

 

콘솔창의 크기가 너무 작아서 키워주었다.

 

1행은 numpy가 제공하는 array 함수로 a라는 객체를 생성한다. array는 ndarry 클래스 형의 다차원 배열을 만들 때 싸는 함수다. 5행의 type 함수는 객체의 데이터형을 알려주는 파이썬 내장 함수다.

실행 결과를 보면 np.ndarry 클래스 형이라는 사실을 알 수 있다. 

 

6행은 a 객체의 shape 함수로 배열 모양을 확인한다. 실행 결과를 보면 a 객체는 12개 요소를 가진 1차원 배열이라는 것을 알 수 있다. 7행은 sort 함수를 호출한다. 실행 후 제대로 정렬이 되었음을 알 수 있다.

 

객체 지향의 특성

  • 객체는 능동적이다. 객체는 .을 찍어 자신이 가진 함수를 능동적으로 호출한다. 객체 내부에 있는 함수를 멤버 함수 또는 메서드라 한다. 객체 내부에는 멤버 변수뿐 아니라 데이터를 저장할 멤버 변수도 있다.
  • 객체는 필요한 만큼 얼마든지 찍어낼 수 있다. np.ndarry 클래스로 만든 객체를 스위스 칼에 비유한다. 클래스는 객체를 찍어내는 틀에 비유할 수 있다. 실제 세계에서는 물건을 찍어낼 때마다 물리적 재료가 필요해 비용이 들지만 컴퓨터 프로그래밍에서는 클래스로 객체를 무한정 생성할 수 있다.

이 코드에서 np.ndarray 클래스로 a, b, c라는 3개의 객체를 생성했다.

 


 

 

 

객체 확인하기 - type과 dir 내장 함수

코딩을 하다 보면 종종 객체가 어떤 클래스인지 사용 가능한 멤버 함수 목록을 알 필요가 있다. 이때 사용하는 명령어가 type과 dir이다. 콘솔 창에서 다음과 같은 명령어를 실행해 보자. type 명령어를 통해 a 객체는 numpy.ndarray 클래스에 속한다는 사실을 알 수 있다.

 

처음에는 어떻게 하면 책에 나온 코드가 찍히는지 몰랐는데 이렇게 콘솔창에 직접 명령어를 입력하면 내용이 바로 출력된다. 여기서는 type과 dir 명령어를 사용했다.

 

 

멤버 함수가 무슨 일을 하는지 어떻게 사용하는지 알려면 help 명령어를 사용한다. 다음은 a 객체의 sort 함수에 대해 알아보는 예이다. a의 모든 함수에 대해 알려면 help(a)를 쓴다.

 

스파이더를 어렵게 생각했는데 써보니 나름 괜찮았다. 

 


 

 

 

학습을 마치고

객체지향에 대한 짧은 학습이었다. 그래도 이렇게라도 아침에 하지 못한 공부를 만회하니 정말 좋았다. 이제 점심을 먹고 모의 면접을 볼 준비를 해야 하니 공부할 시간이 많지 않지만 그래도 컴퓨터 비전 공부를 이어가 볼 것이다. 공부를 조금 해 보니 정말 재미있고 더 알고 싶으며 내가 찾던 학문을 만난 것 같았다.

 

딥러닝보다 훨씬 더 흥미로웠다. 뒷 부분을 조금 학습해 보다 오류가 뜨고 뭔가 호환성 문제가 발생해서 시간이 오래 걸릴 것 같았다. 점심을 먹고 차분히 학습해 볼 것이다.