비전 데이터 전처리 및 OpenCV 실무
시작 전에
환경설정 — Windows PC 에 가상환경을 만들고 OpenCV, NumPy, Matplotlib 을 설치합니다
과정 안내
로드맵과 실습 안내 — STEP 마다의 요약, 실습에 필요한 키·모델·환경
STEP 1
OpenCV 시작과 디지털 영상 — AI 비전 개요, 개발환경, 이미지 입출력, 픽셀과 색공간, 히스토그램 요약 보기
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03컴퓨터비전이란
- 04이미지는 숫자 표
- 05컴퓨터비전이 하는 일
- 06AI 비전이 쓰이는 곳
- 07전처리가 필요한 까닭
- 08AI 비전 작업의 흐름
- 09영상처리와 딥러닝
- 10OpenCV 알아보기
- 11개발환경의 짜임
- 12가상환경 만들고 패키지 설치하기
- 13설치 확인과 첫 코드
- 14실습 지도
- 15실습 1 — 개발환경 점검하기
- 16실습 2 — 숫자로 첫 그림 만들기
- 17실습 3 — 그림 파일 읽고 정보 보기
- 18실습 4 — Matplotlib 으로 그림 띄우기
- 19실습 5 — OpenCV 맛보기: 과정 미리 보기
- 20프로젝트 1 — 수업 전 실습 PC 점검 스크립트
- 21정리
- 22확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03그림 파일의 형식과 압축
- 04읽기 모드와 투명 채널
- 05영상 데이터의 구조
- 06좌표 두 가지와 잘라 내기
- 07저장하기와 저장 옵션
- 08화면에 띄우는 두 길
- 09Matplotlib 의 짜임
- 10여러 장 나란히 놓기
- 11확대해서 보기
- 12결과를 그림 파일로 남기기
- 13실습 지도
- 14실습 1 — 읽기 모드 세 가지 견주기
- 15실습 2 — JPG 품질별로 저장하고 크기와 차이 재기
- 16실습 3 — 좌표로 자리 찾고 잘라 내기
- 17실습 4 — 갤러리 폴더 한 번에 보기
- 18실습 5 — 확대 보기와 savefig 로 남기기
- 19프로젝트 1 — 상품 사진 저장 형식 비교 보고서
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03픽셀과 좌표 다시 보기
- 04해상도
- 05비트 깊이와 데이터형
- 06빛의 삼원색과 RGB
- 07RGB 와 BGR
- 08Gray 변환
- 09HSV 색공간
- 10색으로 고르기
- 11그 밖의 색공간
- 12색공간 고르는 기준
- 13실습 지도
- 14실습 1 — 픽셀 값 읽고 바꾸기
- 15실습 2 — 해상도와 데이터형 살펴보기
- 16실습 3 — BGR, RGB, Gray 바꾸기
- 17실습 4 — HSV 로 바꿔 세 숫자 보기
- 18실습 5 — inRange 로 빨간 과일 고르기
- 19프로젝트 1 — 색으로 과일 고르고 넓이 비율 재기
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03채널이란 다시 보기
- 04채널 나누기와 합치기
- 05채널 하나만 보기
- 06채널 바꿔치기와 색 정보 분석
- 07히스토그램이란
- 08cv2.calcHist 의 인자
- 09밝기 분포 읽기
- 10컬러 히스토그램
- 11마스크로 일부만 세기
- 12히스토그램으로 할 수 있는 일
- 13실습 지도
- 14실습 1 — 채널 나누고 합치기
- 15실습 2 — 채널 하나만 색으로 보기와 바꿔치기
- 16실습 3 — 채널 평균으로 사진의 색 경향 분석하기
- 17실습 4 — 흑백 히스토그램 그리기
- 18실습 5 — 컬러 히스토그램과 마스크 히스토그램
- 19프로젝트 1 — 수업 자료 사진 밝기 진단 도구
- 20정리
- 21확인문제와 해답
STEP 2
영상 향상과 필터 — 밝기와 대비, 노이즈를 지우는 네 가지 필터, 임계값 이진화 요약 보기
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03노이즈란
- 04필터와 커널
- 05평균 필터
- 06커널 크기의 효과
- 07가장자리 처리
- 08Gaussian 필터
- 09평균 필터와 Gaussian 필터 견주기
- 10직접 만든 커널
- 11얼마나 좋아졌나 재기
- 12언제 쓰나와 주의할 점
- 13실습 지도
- 14실습 1 — 깨끗한 그림에 가우시안 노이즈 더하기
- 15실습 2 — 3×3 평균 필터를 손으로 계산하고 cv2.blur 와 견주기
- 16실습 3 — 커널 크기별 평균 필터
- 17실습 4 — Gaussian 필터와 sigma
- 18실습 5 — 직접 만든 커널과 경계 견주기
- 19프로젝트 1 — 야간 주차장 사진의 노이즈 줄이기: 가장 좋은 설정 찾기
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03Salt & Pepper 노이즈
- 04평균 필터가 점 노이즈에 약한 까닭
- 05중앙값이란
- 06Median 필터
- 07경계를 지키는 필터가 필요한 까닭
- 08Bilateral 필터
- 09Bilateral 의 인자와 비용
- 10필터를 견주는 방법
- 11네 필터 한눈에 견주기
- 12필터 고르는 순서
- 13실습 지도
- 14실습 1 — Salt & Pepper 노이즈 만들기
- 15실습 2 — 평균 필터와 Median 필터: 점 노이즈에서 견주기
- 16실습 3 — Median 커널 크기별 결과와 원본과의 차이
- 17실습 4 — Bilateral 인자 바꿔 보기
- 18실습 5 — 네 필터와 두 노이즈 비교표
- 19프로젝트 1 — 노이즈 종류에 맞는 필터 고르기 표
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03이진화란
- 04전역 임계값과 cv2.threshold
- 05임계값 방식 다섯 가지
- 06임계값을 고르는 어려움
- 07조명이 고르지 않을 때
- 08Adaptive Threshold
- 09blockSize 와 C 의 효과
- 10Otsu 알고리즘
- 11Otsu 가 잘 안 맞는 경우와 블러 먼저 하기
- 12세 방법 견주기와 고르는 기준
- 13실습 지도
- 14실습 1 — 전역 임계값으로 부품 이진화하기
- 15실습 2 — 다섯 가지 임계값 방식 견주기
- 16실습 3 — 그늘진 안내문에서 전역과 Adaptive 견주기
- 17실습 4 — blockSize 와 C 바꿔 보기
- 18실습 5 — Otsu 로 자동 임계값 정하기
- 19프로젝트 1 — 영수증 글자 살리기
- 20정리
- 21확인문제와 해답
STEP 3
모폴로지와 경계 검출 — 침식과 팽창, Sobel, Laplacian, Canny 요약 보기
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03경계란 무엇인가
- 04기울기: 옆 칸끼리 빼기
- 05가로 기울기와 세로 기울기
- 06Sobel 연산자
- 07음수와 자료형
- 08기울기의 크기와 방향
- 09커널 크기와 Scharr
- 10Laplacian: 변화량의 변화량
- 11노이즈와 블러 먼저 하기
- 12경계만 남기기와 두 방법 견주기
- 13실습 지도
- 14실습 1 — 한 줄 밝기로 기울기 계산하기
- 15실습 2 — cv2.Sobel 로 가로·세로 경계 찾기
- 16실습 3 — 기울기 크기 합치기와 선만 남기기
- 17실습 4 — Laplacian 으로 경계 찾기
- 18실습 5 — 노이즈 낀 그림에서 블러 먼저 하기
- 19프로젝트 1 — 도로 그림에서 차선과 정지선 찾기
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03좋은 경계 검출의 조건
- 04Canny 의 네 단계 한눈에
- 051단계 블러와 2단계 기울기
- 063단계 비최대 억제
- 074단계 이력 임계값
- 08cv2.Canny 의 인자
- 09기준값 자동으로 정하기
- 10세 알고리즘 견주기
- 11성능을 숫자로 재기
- 12어떤 알고리즘을 고를까
- 13실습 지도
- 14실습 1 — cv2.Canny 기본과 두 기준값 격자
- 15실습 2 — Canny 의 단계 따라가기
- 16실습 3 — 이력 임계값의 효과
- 17실습 4 — 노이즈에서 블러 크기, apertureSize, L2gradient 견주기
- 18실습 5 — 자동 기준값 견주기: 중앙값 규칙과 Otsu 규칙
- 19프로젝트 1 — 경계 검출 알고리즘 비교 보고서
- 20정리
- 21확인문제와 해답
STEP 4
객체 분석과 기하 변환 — 윤곽선과 Bounding Box, 형태와 ROI, 기하 변환, 비디오 요약 보기
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03윤곽선이란
- 04cv2.findContours 의 입력과 결과
- 05찾는 방식과 계층 구조
- 06점 줄이기: CHAIN_APPROX_NONE 과 SIMPLE
- 07윤곽선 그리기
- 08면적과 둘레
- 09무게중심과 모멘트
- 10물체를 감싸는 상자와 원
- 11개수 세기와 잡티 걸러 내기
- 12분석 결과를 표로 정리하기
- 13실습 지도
- 14실습 1 — findContours 와 drawContours
- 15실습 2 — 세 가지 찾는 방식과 hierarchy 읽기
- 16실습 3 — 면적, 둘레, 무게중심 재기
- 17실습 4 — 곧은 상자, 회전 상자, 최소 외접원
- 18실습 5 — 잡티 걸러 개수 세기와 connectedComponentsWithStats
- 19프로젝트 1 — 컨베이어 부품 개수와 크기 검사
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03기하학 변환이란
- 04크기 바꾸기
- 05보간법
- 06자르기와 크기 맞추기
- 07뒤집기와 90도 돌리기
- 08옮기기와 아핀 변환의 짜임
- 09회전
- 10세 점으로 아핀 변환
- 11원근 변환
- 12변환 고르기와 잃는 정보
- 13실습 지도
- 14실습 1 — resize 와 보간법 비교
- 15실습 2 — 가운데 자르기와 레터박스로 128×128 맞추기
- 16실습 3 — 뒤집기, 90도 돌리기, 평행 이동
- 17실습 4 — 회전과 세 점 아핀 변환
- 18실습 5 — 원근 변환으로 비스듬한 화이트보드 펴기
- 19프로젝트 1 — 비스듬히 찍힌 문서 바로 펴고 크기 맞추기
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03동영상은 사진 묶음
- 04동영상 파일 읽기
- 05원하는 프레임 고르기
- 06프레임마다 처리하기
- 07동영상 저장하기
- 08프레임 차이로 움직임 찾기
- 09배경 빼기
- 10실시간 처리와 처리 시간
- 11웹캠 다루기
- 12개인정보와 동영상
- 13동영상 처리 한눈에 고르기
- 14실습 지도
- 15실습 1 — 동영상 열고 속성과 프레임 읽기
- 16실습 2 — 프레임마다 경계 찾고 새 동영상으로 저장하기
- 17실습 3 — 프레임 차이로 움직임 찾기
- 18실습 4 — 배경 빼기로 움직이는 물체에 상자 그리기
- 19실습 5 — 프레임당 처리 시간과 FPS 재기
- 20프로젝트 1 — 주차장 입구 동영상 요약 사진 만들기
- 21정리
- 22확인문제와 해답
STEP 5
AI 데이터 전처리와 YOLO 연계 — 데이터 정제와 증강, 일괄 처리, YOLO 데이터, 파이프라인, 교육 콘텐츠 요약 보기
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03데이터 정제란
- 04깨진 파일과 형식 문제 거르기
- 05너무 어둡거나 밝은 사진
- 06흐린 사진 찾기
- 07같은 사진 찾기
- 08크기와 형식 맞추기
- 09데이터 증강이란
- 10기하 증강
- 11밝기·색·노이즈 증강
- 12증강 파이프라인과 주의할 점
- 13실습 지도
- 14실습 1 — 폴더 점검: 깨진·작은·채널이 다른 파일 찾기
- 15실습 2 — 흐림 점수와 밝기 점수로 품질 표 만들기
- 16실습 3 — 같은 사진 찾기: MD5 와 평균 해시
- 17실습 4 — 증강을 한 장씩 격자로 보기
- 18실습 5 — 씨앗 고정 랜덤 증강 함수로 한 장에서 여덟 장 만들기
- 19프로젝트 1 — 학습용 묶음 만들기: 정제 → 크기 통일 → 증강
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03일괄 처리란
- 04폴더와 경로 다루기
- 05멈추지 않는 일괄 처리
- 06객체 탐지 데이터셋이란
- 07주석 달기(Annotation)
- 08상자 좌표 형식 세 가지
- 09YOLO 데이터셋의 짜임
- 10라벨 검사: 실수 찾기 규칙
- 11라벨을 그림에 그려 확인하기
- 12상자와 함께 하는 증강
- 13실습 지도
- 14실습 1 — 폴더 일괄 처리 기본
- 15실습 2 — 실패에 강한 일괄 처리
- 16실습 3 — 픽셀 좌표와 YOLO 좌표 바꾸기
- 17실습 4 — 주석 검사기로 실수 찾기
- 18실습 5 — YOLO 데이터셋 만들기
- 19프로젝트 1 — YOLO 데이터셋 점검 도구
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03YOLO 다시 보기
- 04ultralytics 와 사전학습 모델
- 05전이 학습
- 06학습 기록 읽기
- 07추론 결과 다루기
- 08맞혔는지 재기
- 09전처리가 결과에 주는 영향
- 10지나친 전처리의 함정
- 11비교 실험 설계
- 12전처리와 증강, 어느 쪽으로 풀까
- 13실습 지도
- 14실습 1 — 사전학습 모델로 첫 추론
- 15실습 2 — 부품 데이터셋으로 전이 학습
- 16실습 3 — 학습한 모델로 부품 찾기
- 17실습 4 — IoU 와 정밀도·재현율 계산기
- 18실습 5 — 나쁜 조건 만들고 전처리로 되살리기
- 19프로젝트 1 — 전처리 전후 YOLO 성능 비교 보고서
- 20정리
- 21확인문제와 해답
- 01먼저 큰 그림부터
- 02용어 짚고 가기
- 03좋은 실습 예제의 조건
- 04학습목표 쓰기
- 05실습 데이터를 코드로 만들기
- 06난이도 조절하기
- 07정답표와 자동 채점
- 08단계별 실습 짜기와 흔한 오류
- 09시각 자료 만들기
- 10평가와 채점 기준표(루브릭)
- 11수업 자료 묶기와 공유
- 12과정 전체를 잇는 종합 실습
- 13실습 지도
- 14실습 1 — 수업 계획표 만들기
- 15실습 2 — 난이도 손잡이가 있는 연습 그림 생성기
- 16실습 3 — 자동 채점기 만들기
- 17실습 4 — 전후 비교 격자와 한 장 요약 만들기
- 18실습 5 — 수업 자료 묶음 만들기
- 19프로젝트 1 — 부품 검사 수업 데모 만들기
- 20정리
- 21확인문제와 해답
참고
참고 자료
실습에 쓰는 파일은 교안과 함께 받은 data 폴더에 있습니다.
부록
장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.
안내
읽기 전에
OpenCV 로 이미지와 동영상을 읽고 다듬어, AI 비전 모델이 배우기 좋은 데이터를 만드는 과정입니다.
- 파이썬 문법은 아는 비전공자를 위한 교안입니다. 영상처리와 OpenCV 는 처음부터 설명하고, 수학은 중고등학교에서 배우는 곱셈, 평균, 비율 정도만 씁니다.
- 장마다 "먼저 큰 그림부터"로 시작해 본문, 실습, 프로젝트, 정리, 확인문제 순서로 이어집니다.
- 본문은 일상의 비유와 그림으로 먼저 설명하고 글로 정리합니다.
- 코드 상자의 "복사" 단추를 누르면 코드가 복사됩니다.
- 실습에 쓰는 그림과 동영상은 OpenCV 로 도형을 그려 만든 작은 가상 자료(그림 한 장 30KB 이하, 동영상 하나 80KB 이하)입니다. 사람은 나오지 않습니다. 실제 사진이나 상점, 제품, 쇼핑몰과 관계없습니다. 실습 코드에 API 키나 웹캠은 필요하지 않습니다.
- 실행 결과는 Windows 11 Pro, Python 3.14.6, OpenCV 5.0.0, NumPy 2.5.4, Matplotlib 3.11.2, pandas 3.1.0, ultralytics 8.4.198, PyTorch 2.15.0(CPU) 에서 얻었습니다.
- 과정 전체의 흐름과 STEP 마다의 요약은 과정 로드맵과 STEP 요약에, 실습을 직접 돌릴 때 필요한 것은 실습 코드 사용 안내에 있습니다. 진짜 API 키는 필요하지 않습니다.
- 18장부터 20장까지는 YOLO 객체 탐지 모델(ultralytics, 라이선스 AGPL-3.0)을 CPU 로 씁니다. 설치는 환경설정에 있습니다.