OpenCV

[Open CV] 이미지 다루기- imread, imshow, waitkey, resize

디벨로펄 2023. 1. 7.
반응형

최종적으로 테이블을 엑셀로 변환작업을 진행하려 합니다. 

 

imread : 이미지 읽기.

이미지 파일은 Numpy Array형태로 값들이 넘어오며 각 숫자가 해당 위치의 색을 의미한다.

image =cv2.imread('./sampleData/tablesample.jpg', cv2.IMREAD_GRAYSCALE) # 이미지 파일 불러오기.
cv2.imshow("image", image) # 윈도우에 이미지 보여주기.
cv2.waitKey(0) # 키보드 입력 대기.

 

* 불러올 수 있는 이미지 파일 format

.png, pbm, .ppm, pxm, pnm, bmp, jpeg, jpg, jpe, jp2, webp, pfm, sr, ras, exr, hdr, pic, tiff, tif

 

* 이미지 불러오는 옵션

- cv2.IMREAD_GRAYSCALE : 회색으로 이미지 출력

- cv2.IMREAD_COLOR : 컬러로 읽기.

- cv2.IMREAD_ANYCOLOR : 어떤 색으로든 출력 가능

...

imshow : 이미지 보여주기. imshow(제목, cv2.imread로 불러온 이미지)

 

cv2.waitKey(0) : 이게 없으면 윈도우가 바로 꺼집니다. python파일의 실행이 종료되기 때문이죠!

 

cv2.resize(image, dsize = (세로, 가로), fx = x, fy=y, interpolation = cv2.INTER_AREA)

원하는 가로, 세로를 입력해줍니다. 이 때, 가로 세로는 정수이어야 합니다.

이미지 확대하는 경우에는 픽셀에 대한 보간법, 이미지 축소의 경우 픽셀에 대한 병합법이 수행된다.

이미지 조절 방법은 크게 두 가지로 나뉜다.

1. 사용자가 요구하는 절대 크기로 변경 : dsize에 원하는 사이즈 입력.(세로, 가로)

2. 비율에 맞게 상대 크기로 변경하는 방법. : fx, fy에 원하는 비율 입력. 1보다 작으면 축소, 1보다 크면 확대

 

**

image : 이미지 

dsize : 절대 크기

fx, fy : 상대 크기

interpolation : 보간법

image =cv2.imread('./sampleData/tablesample.jpg', cv2.IMREAD_GRAYSCALE) # 이미지 파일 불러오기.
# image의 가로 세로 확인, grayscale이미지의 경우, image.shape = (세로, 가로)
# 파이썬에서는 나머지를 버리기 위해서 // 연산자 활용
print(image.shape[0]//2)
print(image.shape[1]//2)
# 또는 int로 형변환
print(int(image.shape[0]//1.5))
print(int(image.shape[1]//1.5))
# 나누는 수.
divider = 1.5
# 절대크기 활용
dst = cv2.resize(image, dsize=(int(image.shape[1]//divider),
                               int(image.shape[0]//divider)), interpolation=cv2.INTER_AREA)
# 상대크기 활용                               
dst2 = cv2.resize(image, dsize=(0,0),
                               fx=1/divider, fy=1/divider, interpolation=cv2.INTER_AREA)

* interpolation 속성

cv2.INTER_NEAREST 이웃 보간법
cv2.INTER_LINEAR 쌍 선형 보간법(가장 많이 사용됨)
cv2.INTER_LINEAR_EXACT 비트 쌍 선형 보간법(확대 시 주로 사용)
cv2.INTER_CUBIC 바이큐빅 보간법(확대 시 주로 사용)
cv2.INTER_AREA 영역 보간법(이미지 축소 시 가장 많이 사용)
cv2.INTER_LANCZOS4 Lanczos 보간법

 

이미지 리사이즈 결과로 한 화면에서 볼 수 있게 됨.

반응형

댓글