목차.
1.OpenCV
2.Matplotlib
3.Imageinfo
1.OpenCV
🎈 cv2사용해보기 실습
# Open CV 임포트
import cv2
# 코드실행 단축키 : 컨트롤 + 쉬프트 + F10
print('현재 opencv의 버전:', cv2.__version__)
# 옵션을 주지 않으면 컬러 영상으로 읽어온다.
# 영상을 가져올때 BGR순서(Blue-> green-> Red)로 가지고 띄운다!
img = cv2.imread('./dog.bmp') # cv2.IMREAD_GRAYSCALE: 그레이스케일로 읽어오는 옵션
cv2.imshow('img', img) # ('창이름', 영상객체)
cv2.waitKey() # 키보드에 아무키를 누르기 전까지 화면이 꺼지지 않는다.
🎈 cv2를 이용한 그레이스케일 영상 불러오기
🔻IMREAD_GRAYSCALE : 그레이스케일로 영상 불러오기
import cv2
# IMREAD_GRAYSCALE : 그레이스케일로 영상 불러오기
img_gray = cv2.imread('./dog.bmp', cv2.IMREAD_GRAYSCALE)
cv2.imshow('img_gray', img_gray)
cv2.waitKey()
2.Matplotlib
🎈 멧플랏을 이용한 흑백영상 출력하기
🔻처음에 cv2를 이용하여 흑백영상을 불러오고 가져온 영상을 plt를 이용하여 GUI환경으로 볼수 있게 해준다 .
#영상 띄우기
img_gray = cv2.imread('./dog.bmp', cv2.IMREAD_GRAYSCALE)
plt.axis('off') # 격자 없애달라
plt.imshow(img_gray, cmap='gray')
plt.show() # plt는 닫기 버튼을 누르면 됩니다.
🎈 멧플랏을 이용한 컬러영상 출력하기
🔻cv2.IMREAD_COLOR: 디폴트 값이기 때문에 생략이 가능하다.
🔻cv2.COLOR_BGR2RGB: BGR값을 RGB값으로 전환 해준다.
-BGR값과 RGB의 값이 변화는건 별거 아닌거 같긴 하지만 순서만 바뀌는데도 엄청난 결과를 나타낸다.
# defult값이라서 IMREAD_COLOR는 생략이 가능함.
img_rgb = cv2.imread('./dog.bmp', cv2.IMREAD_COLOR)
# BGR을 RGB로 변환
img_rgb = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB)
plt.axis('off') # 격자 없애달라
plt.imshow(img_rgb)
plt.show() # plt는 닫기 버튼을 누르면 됩니다.
🎈 멧플랏을 이용한 그레이스케일영상과 컬러영상 한번에 출력하기
🔻 subplot을 이용하여 공간을 확보하여 영상들을 출력해줍니다.
import cv2
import matplotlib.pyplot as plt
# 흑백 이미지로 이미지 파일을 읽어옴
img_gray = cv2.imread('./dog.bmp', cv2.IMREAD_GRAYSCALE)
# 컬러 이미지로 이미지 파일을 읽어옴
img_rgb = cv2.imread('./dog.bmp', cv2.IMREAD_COLOR)
# BGR 컬러를 RGB 컬러로 변환
img_rgb = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB)
# 1행 2열의 첫 번째 서브플롯 설정
plt.subplot(121)
plt.axis('off') # 축을 표시하지 않음
plt.imshow(img_gray, cmap='gray') # 흑백 이미지를 그레이스케일로 표시
# 1행 2열의 두 번째 서브플롯 설정
plt.subplot(122)
plt.axis('off') # 축을 표시하지 않음
plt.imshow(img_rgb) # RGB 컬러 이미지를 표시
plt.show() # 설정한 서브플롯들을 화면에 출력
🎈 그레이스케일영상과 컬러영상를 비교 해보겠습니다.
🔻img_gray와 img_color에 똑같이 강아지 이미지를 넣어주고
✔ img_gray: 그레이스케일을 이용하여 흑백 영상으로 만들어줍니다.
✔ img_color: 컬러 영상으로 만들어줍니다.
import cv2
img_gray = cv2.imread('./dog.bmp', cv2.IMREAD_GRAYSCALE)
print('img_gray type:', type(img_gray)) # img_gray type: <class 'numpy.ndarray'>
print('img_gray shape:', img_gray.shape) # img_gray shape: (364, 548) => ((h(세로), w(가로))형태로 되어있다.)
print('img_gray dtype:', img_gray.dtype) # img_gray dtype: uint8
img_color = cv2.imread('./dog.bmp')
print('img_color type:', type(img_color)) # img_color type: <class 'numpy.ndarray'>
print('img_color shape:', img_color.shape) # img_color shape: (364, 548, 3) => ((h(세로), w(가로), 3)형태로 되어있다.)
print('img_color dtype:', img_color.dtype) # img_color dtype: uint8
🗨 출력값
🔹컬러의 영상 같은경우: img_color.shape를 사용하면 (높이, 너비, 채널) 형태의 튜플이 반환됩니다.
🔹컬러 이미지의 각 픽셀: 빨간색(R), 녹색(G), 파란색(B) 세 가지 색상 채널의 조합으로 이루어져 있습니다.
🔹따라서 채널 수가 3이 됩니다.
🎈img_color의 (가로 * 세로) 형태로 출력하고 싶을땐!
# (img_color의 가로 * 세로) 형태로 출력하고 싶을땐!
height, width = img_color.shape[:2]
print(f'img_color 사이즈: {height} * {width}')
3.Imageinfo
🎈그레이스케일 영상과 컬러 영상을 구별하는 코드는?
🗨 구별하고자 하는 영상의 shape값을 3이 존재 하는지 확인 하면 됩니다.
if len(img_gray.shape) == 2:
print('img_gray는 그레이스케일 영상입니다.')
elif len(img_gray.shape) == 3:
print('img_gray는 컬러 영상입니다.')
if len(img_color.shape) == 2:
print('img_color는 그레이스케일 영상입니다.')
elif len(img_color.shape) == 3:
print('img_color는 컬러 영상입니다.')
🎈 강아지가 안보이게 위에 BGR색상으로 변경해보기
🔹 img_color에 특정 색 정보로 영상 출력 , BGR정보: (255, 102, 255)
🔻 두가지 방법이 존재 합니다.
🔹 첫번째로 for문을 이용한 색상 채우기
for x in range(height):
for y in range(width):
img_color[x, y] = (255, 102, 255)
cv2.imshow('img_color', img_color)
cv2.waitKey()
🔹 두번째 방법으로는 파이썬의 기능을 이용하는 방법
img_color[:,:] = (255, 102, 255)
cv2.imshow('img_color', img_color)
cv2.waitKey()
🗨 둘 다 모두 같은 결과가 나타납니다 ~!
'개발 > OpenCV' 카테고리의 다른 글
2023.07.24 OpenCV Day1(4.Createimg ~ 6.Drawing) (0) | 2023.08.21 |
---|---|
2023.07.24 OpenCV란? (0) | 2023.08.10 |
댓글