개발 공부

7강 본문

AI/AI_Python_OPENCV 기초

7강

아이셩짱셩 2018. 8. 9. 13:04

import numpy as np

import cv2




#이미지의 특정 부분만을 보여지게 할 수 없을까? 가능하다. 이것을 masking이라고 하는데 cv2.bitwise_and 함수를 사용하면 된다.

#이것을 하기위해 opencv의 비트 연산 합수를 사용해봅니다. 비트연산은 이미지에서 특정 영역을 추출할 때 유용하게 사용된다. 예를 들면 이미지에서 바탕을 제거하고, 2개의 이미지를 합치는 경우입니다.

image = cv2.imread('p2.jpg',cv2.IMREAD_UNCHANGED)

cv2.imshow("Original", image)



# 이미지를 위한 배열을 하나 만듭니다. 아래 보면 복잡하게 크기를 정하지요? 

#정중한 값을 정하기 위해서입니다. 도형의 정중앙에서 150픽셀크기의 사각형을 만듭니다.

#cv2.rectangle의 마지막은 두께를 표시하는데 -1로 하면 여백이 없는 사각이 만들어 집니다. 한번 번호를 0, 3으로 바꾸어 보세요.

#넓이와 높이에 int를 붙인 이유는 cv2에서 사각을 그릴 때 정수만 받기 때문이다.

mask = np.zeros(image.shape[:2], dtype = "uint8")

(cX, cY) = (int(image.shape[1] / 2), int(image.shape[0] / -1))

cv2.rectangle(mask, (cX - 75, cY - 75), (cX + 75 , cY + 75), 255, -1)

cv2.imshow("Mask", mask)


# 이제 만든 사각형을 합쳐볼까요?

masked = cv2.bitwise_and(image, image, mask = mask)

cv2.imshow("Mask Applied to Image", masked)

cv2.waitKey(0)


# 이제 만든 원을 합쳐볼까요?

mask = np.zeros(image.shape[:2], dtype = "uint8")

cv2.circle(mask, (cX, cY), 100, 255, -1)

masked = cv2.bitwise_and(image, image, mask = mask)

cv2.imshow("Mask", mask)

cv2.imshow("Mask Applied to Image", masked)

cv2.waitKey(0)

'AI > AI_Python_OPENCV 기초' 카테고리의 다른 글

9강  (0) 2018.08.09
8강  (0) 2018.08.09
6강  (0) 2018.08.07
5강  (0) 2018.08.07
4강 이미지 회전  (0) 2018.08.07
Comments