안녕하세요! 저번 글에 이어서 OpenCV 이미지를 다뤄보겠습니다.
2022.10.05 - [AI, 빅데이터/AI] - OpenCV - 색 지정 / 선 / 도형 그리기
저번에는 이미지를 만들었다면, 이번에는 직접 받아온 파일을 사용해보겠습니다.
이미지 가져오기
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
cv2_imshow(img)
이미지 트리밍
이미지의 일부 구간을 슬라이싱하여 트리밍 할 수 있습니다.
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
print(img.shape)
my_img = img[2000:3000,1000:3000]
cv2_imshow(my_img)
.shape로 이미지의 크기를 확인하여 대략적으로 슬라이싱할 크기를 지정합니다.
사용 방법 => 새 변수 = 이미지[행 시작: 행 끝, 열 시작: 열 끝]
이렇게 구간을 사용하여 트리밍할수도 있지만, 특정 좌표점을 이용하여 트리밍 할 수도 있습니다.
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
width,height = 2500,2000
pts1 = np.float32([[300,2000],[2800,2000],[500,3500],[2800,3200]])
# 입력 이미지 좌표
pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]])
# 출력 이미지 좌표
matrix = cv2.getPerspectiveTransform(pts1,pts2)
# 변환 행렬렬
my_img = cv2.warpPerspective(img,matrix,(width,height))
# 변환된 이미지
cv2_imshow(my_img)
이미지 크기 변경
작업을 하다보면 이미지 크기가 너무 커서 번거로울 수도 있는데요. 더 편하게 보기 위해 resize로 변경하여 확인하곤 합니다.
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
my_img = cv2.resize(img,(300,300))
cv2_imshow(my_img)
이미지 회전
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
h,w = img.shape[:2]
mat = cv2.getRotationMatrix2D((w/2,h/2),90,1)
my_img = cv2.warpAffine(img,mat,(h,w))
my_img = cv2.resize(my_img,(300,300))
cv2_imshow(my_img)
cv2.getRotationMatrix2D(회전중심, 각도, 확대 비율)을 사용하여 변환 행렬 매트릭스를 생성하고,
cv2.warpAffine(이미지, 함수 출력 값, 사이즈)을 사용하여 매트릭스에 따라 이미지를 회전합니다.
이미지 반전
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
my_img = cv2.flip(img,0)
my_img = cv2.resize(my_img,(500,500))
cv2_imshow(my_img)
flip(이미지, 반전 축)입니다.
0이 아닌 1을 적어준다면 좌우로 반전이 되겠네요!
이미지 색조 변환
이미지 색조 변환입니다.
이미지 작업을 하다 보면 회색으로 색을 변환하는 일이 많은데, 꼭 알아두시길 바랍니다.
https://docs.opencv.org/3.4/d8/d01/group__imgproc__color__conversions.html
더 자세한 내용은 아래의 링크에서 참고하시길 바랍니다.
우리는 이미지를 회색으로 변환할 거예요!
현재 BGR이니 GRAY로 바꿔야겠죠? 따라서 BGR2GRAY를 사용합니다.
여기서 2는 to를 의미하는 것 같네요
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
my_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
my_img = cv2.resize(my_img,(300,300))
cv2_imshow(my_img)
색상 반전
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
x = np.array(img)
my_img = 255-x
cv2_imshow(my_img)
임계값 처리
일정 값 이상 또는 이하를 같은 값으로 처리하는 방법입니다.
이 또한 알아두면 좋겠네요
img = cv2.imread('/content/drive/MyDrive/content/gdrive/sample1.JPG')
my_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
retval, my_img2 = cv2.threshold(my_img,150,255,cv2.THRESH_BINARY)
cv2_imshow(my_img2)
오늘은 이렇게 이미지 트리밍 및 변환에 대해 다뤄보았습니다.
특히 회색으로 변환하는 부분은 꼭 알아두었으면 좋겠네용
감사합니다!
'AI > AI' 카테고리의 다른 글
[AI] K-Nearest Neighbors 직접 구현 (0) | 2022.10.19 |
---|---|
[OpenCV] 이미지 마스킹 기초 (2) | 2022.10.12 |
[AI] OpenCV - 색 지정 / 선 / 도형 그리기 (3) | 2022.10.05 |
[AI] Linear Regression 직접 구현 / 라이브러리 이용하여 구현 (1) | 2022.09.28 |
신호 그래프의 Feature 값 표현하기 (0) | 2022.09.28 |