오랜만입니다. 요새 팀프로젝트로 인해서 블로그를 할 여력이 없었습니다.

나중에 제가 무슨 프로젝트를 했는지 블로그에 올리거니까 많은 관심 부탁드립니다.
오늘 같이 학습 할 것은 바로 OPEN CV 입니다.
그게 뭐냐고요?
Open Source Computer Vision Library의 약어로.... 너무 지루하네요 일종의 머신 비전입니다.
말그대로 영상처리 이미지처리 와 같이 사람의 눈으로 인식되는 것을 컴퓨터에서도 가능하게 해주는 코드입니다.
OPEN CV
- 500 가지가 넘는 영상 처리 알고리즘이 최적화 되어있다.
- 영상 처리에 사용할 수 있는 오픈 소스 라이브러리다.
- GPU 가속 모듈을 지원한다.
- 머신러닝과 관련된 모듈을 포함한다.
- 컴퓨터 비전 분야를 발전시키기 위한 목적이다.
OPEN CV 활용
- 이미지 변환(크기 조정, 회전, 자르기)
- 객체 탐지 및 추적 (얼굴 인식, 물체 검출)
- 딥러닝 모델을 활용한 이미지 분류 및 객체 탐지
- 공장에서 제품 검사
- 의료 영상 처리 및 보정
- CCTV
- 로보틱스
정말 많은 곳에 활용되는 코드입니다.
그럼 일단 설치부터 해봅시다.
아 가상환경 확인하셔야 합니다.!!!!!
pip install opencv-python
그리고 import는 이제 말 안해도 아시죠?
import cv2
그럼이제 간단하게 이미지를 읽고 가져와 봅시다!
이미지를 읽느 함수는 : imread(파일명,[옵션]) 형식으로 파일명은 영문이나 숫자여야 합니다.
옵션 종류
- cv2.IMREAD_COLOR: 이미지를 컬러(BGR)로 읽음 (기본값)
- cv2.IMREAD_GRAYSCALE: 이미지를 흑백으로 읽음
- cv2.IMREAD_UNCHAGED: 알파 채널(투명도 포함)을 포함하여 이미지를 읽음
실습 인터넷에서 사과 사진 읽어오기
- 인터넷에서 떠도는 사과 사진 아무거나 가져오기
- 컬러, 흑백, 투명도 순서대로 결과 내보내기
- 이미지를 쓰는 방법은 cv2.imshow("파일 이름", 이미지)

여기서 잠깐 분명 코드가 실행되고 뭔가 반짝 하고 사라지지 않았나요?
네 코드는 정말 잘 실행 된 것이지만 그 창을 유지하라는 명령어가 없기 때문에 그렇습니다.
이럴때
cv2.waitkey(delay)
delay가 0일경우 무한적으로 대기 하게 됩니다.
그런데 이제 테스트를 위해서 계속 이미지를 끄고 키고 반복적으로 할 경우 더미 메모리가 쌓여 이제 정보처리에 지장을 줍니다. 그래서 보통 waitkey는 아래와 같은 함수와 같이 사용됩니다.
cv2.destroyAllWindows()
모든 창을 닫음
cv2.destroyWindow(winname)
지정된 창을 닫음(winname: 닫을창의 이름)
그런데 출력만 해보고 저장을 안하면 나중에 또 쓸수가 없습니다. 그러니 이번에는 쓰는 법도 같이 알아 봅시다.
쓰는 법
cv2.imwrite('저장할 파일경로', 저장할 이미지)
- 파일명에 따른 압축 방법
- output.jpg : JPEG 이미지 (손실 압축)
- output.png : PNG 이미지 (무손실 압축)
- output.bmp : BMP 이미지 (비압축)
- output.tiff : TIFF 이미지 (무손실/ 손실 압축 가능)
그럼 이제 읽고 쓰는 법을 배웠으니, 꾸미는 방법을 배워야 겠죠?
보통 이미지 크기를 변경하거나 데이터 타입을 변경, 색상 공간 변환을 주로 사용합니다.
이미지 크기 방향 변환
.shape(높이, 너비, 채널 수)
- 채널(channel) - 흑백 이미지는 하나의 채널이 있고, 컬러 이미지의 경우에는 빨간색, 초록색, 파란색의 총 3개의 채널을 가짐
cv2.resize(이미지, (너비, 높이))
- 너비,높이없이 = none , fx, fy를 사용하여 가로/세로 비율로 크기 조정
- fx, fy = 0.5 # 50% 비율
ROI처리 (관심 영역을 제외한 이미지 자르기)
- 사용법: roi = image[y:y, x:x]
- 주의) ROI는 원본 이미지와 메모리를 공유하기 때문에 ROI를 수정하면 원본이미지도 변경됨으로, 복사본을 만들고 싶다면 copy()를 사용.
- roi_copy = image[ y:y , x:x].copy()
회전 및 이동
- warpAffine(): 이미지를 회전하거나 이동하기 위해 변환 행렬을 사용
자 지루한 이론은 다 했으니, 이 모든걸 적용할 수 있는 실습을 해야 이해가 되겠죠?
실습. 이미지 처리
- 이미지를 읽어서 크기를 출력하세요
- 이미지를 50% 크기로 축소하고 새로운 창에 표시하세요.
- 이미지를 30도 회전하여 저장하세요
- ROI로 원하는 지점을 선택후 copy로 저장 하세요.

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
여기까지 읽으신 분들에게 하나의 팁!!!
ROI 영역을 어떻게 지정할지 막막하죠 일일이 찍어가면서 알아야 하니
하지만 그것을 이제 드래그로 해결할 수 있는 함수하나 알려 드리겠습니다.

'python 시작하기' 카테고리의 다른 글
| python OpenCV 컨투어 탐지 (0) | 2025.01.09 |
|---|---|
| python OPEN CV를 더욱 깔끔하게 전 처리 해보자! (1) | 2025.01.08 |
| python seaborn을 이용한 데이터 시각화 (0) | 2024.12.18 |
| Python 데이터 시각화 (2) (1) | 2024.12.17 |
| Python 데이터 시각화 (1) | 2024.12.16 |