Computer Vision/opencv(python) 70

[10] 키보드, 마우스, 트랙바 이벤트 처리하기

키보드 입력 대기 함수 cv2.waitKey(delay=None) -> retval 키보드에서 'i' 또는 'I' 키를 누르면 영상을 반전 import sys import numpy as np import cv2 img=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE) cv2.namedWindow('image') cv2.imshow('image',img) while True: key=cv2.waitKey() if key==27: break elif key==ord('i'): img=~img cv2.imshow('image',img) cv2.destroyAllWindows() 마우스 이벤트 콜백함수 등록 함수 cv2.setMouseCallback(windowName,onMouse..

[09] 5) 카메라와 동영상 처리하기

cv2.VideoCapture 클래스 OpenCV 에서는 카메라와 동영상으로부터 프레임 ( 을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리함 카메라 열기 cv2.Videocapture(index,apiPreference=None) -> retval • index: camera_id + domain_offset_id 시스템 기본 카메라를 기본 방법으로 열려면 index 에 0 을 전달 • apiPreference : 선호하는 카메라 처리 방법을 지정 • retval: cv2.VideoCapture 객체 cv2.VideoCapture.open(index,apiPreference=None) ->retval • retval: 성공하면 True, 실패하면 False 동영상, 정지영상 시퀀스,..

[08] 4) OpenCV 그리기 함수

OpenCV 그리기 함수 •OpenCV 는 영상에 선 , 도형 , 문자열을 출력하는 그리기 함수를 제공 •선 그리기 : 직선 , 화살표 , 마커 등 •도형 그리기 : 사각형 , 원 , 타원 , 다각형 등 •문자열 출력 그리기 함수 사용 시 주의할 점 그리기 알고리즘을 이용하여 영상의 픽셀 값 자체를 변경 원본 영상이 필요하면 복사본을 만들어서 그리기 & 출력 그레이스케일 영상에는 컬러로 그리기 안 됨 cv2.cvtColor() 함수로 BGR 컬러 영상으로 변환한 후 그리기 함수 호출 직선 그리기 cv2.line(img,pt1,pt2,color,thickness=None,lineType=None,shif=None) --> img • img: 그림을 그릴 영상 • pt1, pt2: 직선의 시작점과 끝점 . ..

[07] 3) 마스크 연산과 ROI

ROI Region of Interest, 관심 영역 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역 마스크 연산 OpenCV 는 일부 함수에 대해 ROI 연산을 지원하며 , 이때 마스크 영상 을 인자로 함께 전달해야 함 (ex)cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc. 마스크 영상은 cv2.CV_8UC1 타입 그레이스케일 영상 마스크 영상의 픽셀 값이 0 이 아닌 위치에서만 연산이 수행됨 ->보통 마스크 영상으로는 0 또는 255 로 구성된 이진 영상 (binary image) 을 사용 마스크 연산을 지원하는 픽셀 값 복사 함수 cv2.copyTo (src , mask , dst None ) --> dst ..

[06] 2) 영상의 생성, 복사, 부분 영상 추출

지정한 크기로 새 영상 생성하기 numpy.empty (shape , dtype= float , ......) --> arr numpy.zeros (shape , dtype= float , ......) --> arr numpy.ones (shape , dtype= None , ......) --> arr numpy.full (shape , fill_value , dtype= None , ......) --> arr shape: 각 차원의 크기, (h,w)또는 (h,w,3) dtype: 원소의 데이터 타입, 일반적인 영상이면 numpy.unit8지정 arr: 생성된 영상(numpy.ndarray) 참고사항 영상의 생성 예제코드 import numpy as np import cv2 img1=np.empty..

[05] openCV-Python 기초 사용법 1) 영상의 속성과 픽셀 값 참조

OpenCV는 영상 데이터를 numpy.ndarray로 표현 OpenCV 영상 데이터 자료형과 NumPy 자료형 영상의 속성 참조 예제 import sys import cv2 img1=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE) img2=cv2.imread('cat.bmp',cv2.IMREAD_COLOR) if img1 is None or img2 is None: print('Image load failed') sys.exit() print(type(img1)) print(img1.shape) print(img2.shape) print(img1.dtype) print(img2.dtype) h,w=img1.shape print('w x h = {} x {}'.format(w..

[04] [실습] 이미지 슬라이드쇼

이미지 슬라이드쇼 특정 폴더에 있는 모든 이미지 파일을 이용하여 슬라이드쇼를 수행 구현 할 기능 특정 폴더에 있는 이미지 파일 목록 읽기 이미지를 전체 화면으로 출력하기 일정 시간동안 이미지를 화면에 출력하고, 다음 이미지로 교체하기 (무한루프) 특정 폴더에 있는 이미지 파일(*.jpg)목록 읽기 os.listdir() import os file_list=os.listdir('.\\images') img_files=[file for file in file_list if file.endswith('.jpg')] import glob img_files=glob.glob('.\\images\\*.jpg') 전체 화면 영상 출력 창 만들기 먼저 cv2.WINDOW_NORMAL 속성의 창을 만든 후 , cv2.s..

[03]Matplotlib을 이용한 영상 출력

컬러 영상 출력 컬러 영상의 색상 정보가 RGB 순이어야함 cv2.imread() 함수로 불러온 영상의 색상 정보는 BGR 순서이므로 이를 RGB 순서로 변경해야 함 --> cv2.cvtColor() 함수 이용 그레이스케일 영상 출력 plt.imshow() 함수에서 컬러맵을 cmap='gray'으로 지정 Matplotlib을 이용한 영상 출력 import matplotlib.pyplot as plt import cv2 # 컬러 영상 출력 imgBGR = cv2.imread('cat.bmp') imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB) plt.axis('off') plt.imshow(imgRGB) #반드시 RGB순서로 plt.show() # 그레이스케일 영상 출..

[02] OpenCV 주요 함수 설명

Open CV API 도움말 찾기 OpenCV 최신 도움말:docs.opencv.org/master/ OpenCV: OpenCV modules OpenCV 4.5.2-pre Open Source Computer Vision docs.opencv.org 영상 파일 불러오기 cv2.imread(filename,flags=None)-->retval filename: 불러올 영상 파일 이름(문자열) flags: 영상 파일 불러오기 옵션 플래그 retval: 불러온 영상 데이터(numpy.ndarry) 영상 파일 저장하기 cv2.imwrite(filename,img,params=None) -> retval filename: 저장할 영상 파일 이름(문자열) img: 저장할 영상 데이터 params: 파일 저장 옵션..

[01]HelloCV.py 프로그램 만들기

BMP 파일을 불러와서 출력하는 소스 코드 추가 입력 import sys import cv2 img=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE) cv2.imwrite('cat_gray.png',img) if img is None: print('Image load failed!') sys.exit() #프로그램 종료 cv2.namedWindow('image',cv2.WINDOW_NORMAL) #창을 생성 cv2.imshow('image',img) while True: if cv2.waitKey()==27: #esc 키가 눌리면 종료 break cv2.destroyAllWindows() #화면에 나타나 있는 모든 창을 닫음