내용

글번호 1202
작성자 허진경 (나자바바)
작성일 2023-03-26 09:46:15
제목 2023.3.25 메모장 내용
내용 ToC(Table of Content, 목차)를 보시려면 아나콘다 2022.10 이전 버전을 설치하세요. https://repo.anaconda.com/archive/ 에서 Anaconda3-2022.10-Windows-x86_64.exe을 내려받아 설치하세요. 이미 설치된 2023.03 버전은 '프로그램 추가/제거'에서 삭제하세요. 그런 후 2022.10 버전을 설치하세요. 아나콘다 프롬프트 실행시켜 OpenCV 설치하세요. pip install opencv-python ----------------------------- 1장 요약 OpenCV : 오픈소스 영상처리 라이브러리, 구현은 C++, 인터페이스는 파이썬, 자바등으로 제공 pip install opencv-python <-- Anaconda 설치 후 Anaconda Prompt에서 실행 import cv2 <--OpenCV 라이브러리 로드 넘파이배열 = cv2.imread(파일명, 플래그) cv2.imshow(윈도우타이틀, 넘파일배열) cv2.imwrite(파일명, 넘파일배열) cap = cv2.VideoCapture("동영상파일명" 또는 0 또는 "rtsp://...") cap.isOpened()가 true이면 동영상이 열렸거나 카메라가 연결된 것임 ret, img = cap.read() <-- 프레임 하나를 읽음 창을 띄우고 이벤트 처리하려면... 창, 콜백함수, 창과 콜백함수를 연결 <- cv2.setMouseCallback(윈도우타이틀, 콜백함수이름) cv2.namedWindow(윈도우타이틀) <-- 타이틀만 갖는 윈도우 생성, 이거 후 setMouseCallback() 해야 함 line, rectangle, cirlce, ellipse, polylines 2장은...이미지의 기본 연산에 대해서... ----------------- 2일차 아침에 1일차 요약한 것 1일차 정리 OpenCV: 오픈소스 영상처리 라이브러리 C++로 구현, 파이썬 인터페이스를 제공 pip install opencv-python 이미지의 한 점은 화소(Pixel)이라 부름 화소의 좌표 표현은 (x, y)이지만 배열의 인덱싱은 [y, x]임 양자화 레벨이 1바이트(8bit)이므로 한 화소의 색의 표현 범위는 0~255 컬러일 경우 Blue, Green, Red 각 성분이 0~255사이 값을 가짐 0이면 빛이 없으므로 검정, 255이면 완전한 빛이 들어감 Blue, Green, Red 모두 255이면 White, 모두 0이면 Black 영상처리에서 Black은 배경, White가 객체로 간주됨 import cv2 <- OpenCV라이브러리를 불러옴 넘파이배열 = cv2.imread(파일명, 플래그) <- 플래그는 cv2.IMREAD_COLOR, cv2.IMREAD_GRAYSCALE, cv2.IMREAD_UNCHANGED가 있으며 PNG파일의 경우 불투명도를 의미하는 Alpha 채널이 있고 이 값도 읽어들임 cv2.cvtColor(이미지원본, 플래그)를 이용하면 색상 공간(Color Space)을 바꿀수 있음, 보통 컬러를 회색조(Grayscale) 영상으로 바꿀 때 사용함, 그 외에도 BGR -> RGB, RGB -> HSV 등으로 바꿀 때도 사용 OpenCV는 채널이 배열의 마지막 인덱스에 저장 Channel Last이고, 채널의 순서는 BGR(A) 윈도우에 이미지 출력 cv2.imshow(윈도우타이틀, 넘파이배열) cv2.waitKey() <-- 무한 대기 cv2.destroyAllWindows() <-- 모든 창을 닫기 cap = cv2.VideoCapture(동영상파일경로 또는 0 등 숫자 또는 rtsp://주소) if cap.isOpened(): ret, img = cap.read() <-- 프레임 하나를 읽어들임, ret는 true/false, img는 넘파이배열/None 이벤트 마우스 이벤트, 이벤트소스(윈도우), 이벤트 핸들러(콜백함수), cv2.setMouseCallback(윈도우타이틀, 콜백함수) def 콜백함수(event, x, y, flag, param) 키보드 이벤트 : 키코드 = cv2.weitKey(대기시간을 밀리초로 설정) <- -1 또는 눌러진 키코드 도형 그리기 -- 2장 이미지 연산 기본 연산은 넘파일 배열을 이용 * 넘파이는 255값을 넘으면 나머지 값이 저장된다는 것을 주의하세요. 255보다 크면 255로 정하는 Saturation연산이 필요 * 넘파이의 인덱싱/슬라이싱을 사용해서 연산하세요. 브로드캐스팅 규칙을 사용하세요.