본문 바로가기

etc/FastCampus 챌린지

[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 6 회차

728x90
반응형

오늘도 만나뵙는 황선생님... 6일차 인데 아무래도 50회차까지는 무리일거 같습니다 ㅠ
술한번 먹으면 15만원 날라가게 생겨서 술도 못먹겟네요 

회사 노트북 인증

 

< mask 영상이라고 부르며, 우측 흰색 이미지를 ROI 라고 한다 >

마스크 연산과 ROI

▪ ROI • Region of Interest, "관심 영역" 이라고 함
• 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역

▪ 마스크 연산

• OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 이때 마스크 영상을 인자로 함께 전달해야 함 (e.g.) cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc.

• 마스크 영상은 cv2.CV_8UC1 타입(그레이스케일 영상)
• 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행됨 → 보통 마스크 영상으로는 0 또는 255로 구성된 이진 영상(binary image)을 사용

 

▪ 마스크 연산을 지원하는 픽셀 값 복사 함수

cv2.copyTo(src, mask, dst=None) -> dst


• src: 입력 영상
• mask: 마스크 영상. cv2.CV_8U. (numpy.uint8) 0이 아닌 픽셀에 대해서만 복사 연산을 수행.
• dst: 출력 영상. 만약 src와 크기 및 타입이 같은 dst를 입력으로 지정하면 dst를 새로 생성하지 않고 연산을 수행. 그렇지않으면 dst를 새로 생성하여 연산을 수행한 후 반환함.

▪ 마스크 연산 예제

src = cv2.imread('airplane.bmp', cv2.IMREAD_COLOR)
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp', cv2.IMREAD_COLOR)

cv2.copyTo(src, mask, dst)

• Numpy의 불리언 인덱싱(Boolean indexing)을 이용한 마스크 연산

dst[mask > 0] = src[mask > 0]

 

집에 와서 블로그 쓰고 ㅠ 완주 못할거 같습니다
인증샷 세개는 에바인데 

 

▪ OpenCV 그리기 함수

• OpenCV는 영상에 선, 도형, 문자열을 출력하는 그리기 함수를 제공
• 선 그리기: 직선, 화살표, 마커 등
• 도형 그리기: 사각형, 원, 타원, 다각형 등 • 문자열 출력


▪ 그리기 함수 사용 시 주의할 점

• 그리기 알고리즘을 이용하여 영상의 픽셀 값 자체를 변경 → 원본 영상이 필요하면 복사본을 만들어서 그리기 & 출력 • 그레이스케일 영상에는 컬러로 그리기 안 됨 → cv2.cvtColor() 함수로 BGR 컬러 영상으로 변환한 후 그리기 함수 호출

▪ 직선 그리기

cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) -> img

img: 그림을 그릴 영상
• pt1, pt2: 직선의 시작점과 끝점. (x, y) 튜플.
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택. 기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0.

▪ 사각형 그리기

cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) -> img
cv2.rectangle(img, rec, color, thickness=None, lineType=None, shift=None) -> img

• img: 그림을 그릴 영상
• pt1, pt2: 사각형의 두 꼭지점 좌표. (x, y) 튜플.
• rec: 사각형 위치 정보. (x, y, w, h) 튜플.
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택. 기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0.

▪ 원 그리기

cv2.circle(img,center, radius, color, thickness=None, lineType=None, shift=None) -> img

• img: 그림을 그릴 영상
• center: 원의 중심 좌표. (x, y) 튜플.
• radius: 원의 반지름 • color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택. 기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0.

▪ 다각형 그리기

cv2.polylines(img,pts, isClosed, color, thickness=None, lineType=None, shift=None) -> img

• img: 그림을 그릴 영상
• pts: 다각형 외곽 점들의 좌표 배열. numpy.ndarray의 리스트. (e.g.) [np.array([[10, 10], [50, 50], [10, 50]], dtype=np.int32)]
• isClosed: 폐곡선 여부. True 또는 False 지정.
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택. 기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율. 기본값은 0.

 

▪ 문자열 출력

cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None,
lineType=None, bottomLeftOrigin=None) -> img

• img: 그림을 그릴 영상
• text: 출력할 문자열
• org: 영상에서 문자열을 출력할 위치의 좌측 하단 좌표. (x, y) 튜플.
• fontFace: 폰트 종류. cv2.FONT_HERSHEY_ 로 시작하는 상수 중 선택
• fontScale: 폰트 크기 확대/축소 비율
• color: 선 색상 또는 밝기. (B, G, R) 튜플 또는 정수값.
• thickness: 선 두께. 기본값은 1. 음수(-1)를 지정하면 내부를 채움.
• lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택.
• bottomLeftOrigin: True이면 영상의 좌측 하단을 원점으로 간주. 기본값은 False.

728x90
반응형