이미지 분석을 위한 첫걸음으로 opencv를 사용해보고자 한다.
opencv는 이미지를 처리하는 오픈소스 라이브러리이다.
전체 목표는 이미지를 읽어와서 그레이스케일한 후 유사도를 반환할 것이다.
천천히 시작해 보자!!
pip install opencv-python
코드를 작성하고자 하는 환경에 opencv를 설치한다.
import cv2 as cv
print(cv.__version__) # 4.9.0
버전이 반환된다면 아주 잘 설치가 된 것이다!!
import cv2 as cv
img = cv.imread("path/to/image")
cv.imshow("Display window", img)
k = cv.waitKey(0) # 다른 키를 누를 때 까지 이미지 보여주기
이렇게 하면 이미지를 읽어와서 보여줄 수 있다.
waitKey()를 하지 않으면 슉 바로 이미지가 꺼지기 때문에 추가해주어야 한다.
추가적으로 창관리하는 함수 5가지를 살펴보자
import cv2
file_path = 'image/img.jpg'
img = cv2.imread(file_path) # 이미지를 기본 값으로 읽기
img_gray = cv2.imread(file_path, cv2.IMREAD_GRAYSCALE) # 이미지를 그레이 스케일로 읽기
cv2.namedWindow('origin') # origin 이름으로 창 생성
cv2.namedWindow('gray', cv2.WINDOW_NORMAL) # gray 이름으로 창 생성
cv2.imshow('origin', img) # origin 창에 이미지 표시
cv2.imshow('gray', img_gray) # gray 창에 이미지 표시
cv2.moveWindow('origin', 0, 0) # 창 위치 변경
cv2.moveWindow('gray', 100, 100) # 창 위치 변경
cv2.waitKey(0) # 아무키나 누르면
cv2.resizeWindow('origin', 200, 200) # 창 크기 변경
cv2.resizeWindow('gray', 100, 100) # 창 크기 변경
cv2.waitKey(0) # 아무키나 누르면
cv2.destroyWindow("gray") # gray 창 닫기
cv2.waitKey(0) # 아무키나 누르면
cv2.destroyAllWindows() # 모든 창 닫기
imread(path) : 이미지 읽어오기
namedWindow(name) : 창 생성
imshow(name, image) : 창에 이미지 표시
moveWindow(name, x, y) : 창 위치 변경
resizeWindow(name, x, y) : 창 크기 변경
destroyWindow('name') : 창 닫기
destroyAllWindows() : 모든 창 닫기
waitkey(0) : 키가 눌려질 때까지 기다리기
위에 살짝 언급되었는데 이미지를 읽어올 때 옵션을 통해 그레이스케일을 진행할 수 있다.
그레이스케일이란 이미지를 흑백(회색조) 이미지로 전환을 하는 것이다.
import cv2 as cv
# 그레이스케일로 파일 읽어오기
img = cv.imread('img.jpg', cv.IMREAD_GRAYSCALE)
# 파일 저장하기
cv.imwrite('gray_img.jpg',img)
이상으로 opencv의 기본 동작 함수 및 옵션을 살펴보았다.
다음에는 이미지 유사도 분석을 진행해 보겠다
728x90
'프로그래밍 > Python' 카테고리의 다른 글
[OpenCV] 이미지 분석 시작하기 - 유사도 분석 (0) | 2024.02.29 |
---|---|
[Pandas] Dataframe row apply 활용법 (0) | 2024.01.15 |
[Pandas] Dataframe row 순회하는 법 (0) | 2023.09.13 |
[Pandas] FutureWarning: iteritems is deprecated and will be removed in a future version. Use .items instead. for column, series in pdf.iteritems() 오류 해결 - Pandas 버전 맞추기 (0) | 2023.02.24 |
[Python] 도로명 주소 위도,경도로 전환하기 (지오코딩) (0) | 2022.11.02 |