이미지 처리

be1le·2022년 3월 3일
13

Open-CV

목록 보기
1/11
post-thumbnail

이미지 처리 basic

파이썬에서 이미지를 처리하는 방법은 여러가지가 있지만 오늘 중점적으로 다뤄볼 내용은 cv2를 이용한 이미지 처리이다.

cv2를 import한 후에 img라는 변수에 cv2의 .imread()를 사용하여 이미지를 로드한다.

우리는 img를 2차원으로 인지 하지만 컴퓨터는 3차원 (채널이 추가된 차원)으로 인지한다. 어떻게 이미지 파일이 3차원의 구조를 갖을수 있는 지 알아보자.

이렇게 2차원의 img도...

이렇게3차원의 이미지로 출력이 된다. 높이,너비는 알겠는데 채널은 무엇일까??

채널에 대한 이해

채널이 무엇일까....? 사실 채널은 rgb값 즉 색의정보를 담고있는 차원이다.
(앞으로우리는 rgb값이 아닌 bgr로 설명 또는 실습을 진행할 거기에 혼란을 막기 위해 cv2에서 rgb는 bgr이구나! 라고 생각하면 편할 것이다.)

사진의 픽셀 마다 색의정보를 표현해주는 그러한 차원! 그것이 바로 채널이다!


이러한 보석십자수가 있다고 했을때, 저보석알 하나하나의(px의) 색깔을 표현해 주기 위해 있는것이 채널이라는 개념이다!

cv2에서의 이미지 처리

사각형 그려주기

pt1과 pt2의 정보를 입력하면 알아서 네모를 그려준다. color는 네모박스의 색을 조절 할 수 있고 마지막으로 thickness는 굵기 이다.

원 그려주기

원은 원의 중심과 반지름의 크기를 정해주면 자동으로 그려준다. radius는 반지름 (수식에서의r) 두께는 사각형 그려주기와 동일하게 tickness를 사용하여 조절할 수 이싿.

이미지 잘라주기.

이미지를 자르는(crop) 것과 resizing하는 것은 엄연히 다른 개념이다. crop한다는 것은 우리가 피자를 8조각으로 자르는 것이고 resizing은 피자를 M으로 시킬지, L로 시킬지 정하는 것이다.
이미지를 자를때는 조금 특이하게 y,x축 순서로 알려주어야 한다! 헷갈리더라도 잊지말자!

밤12시에 내가한 비유 때문에 피자를 시켰다.

이미지 resizing

이미지를 resizing 할때는 cv2의 resize()를 사용한다.

채널값(색)바꾸기

추가로 정말 많은 옵션을 줄 수 있다.

이많은 옵션을 다 외울순 없어도 cv2를 자주 사용하다 보면 어렴풋이 기억나는 경험을 할 수 있을 것이다!!
모든 속성을 다루기는 무리가 있을 수도 있지만 앞으로 이어질 opencv 블로깅에서 기회가 있을때 마다 하나씩 다 써보도록 하겠다!

profile
그저 그런 개발자가 되지 않겠습니다.

0개의 댓글