반응형

Program 135

[Open CV] OpenCV-Python 기초 사용법 _ 마우스 이벤트 처리하기

OpenCV에서 일반적으로 띄우는 window 창에서는 마우스 이벤트를 사용할 수 있는데이는 우리가 마우수를 사용해서 어떤 동작을하게될때 보통은 무시가되는데setMouseCalllback 함수를 사용하여 그 동작을 돌려받아 다른 기능을 할수 있다. 그래서 콜백함수를 등록한 뒤 사용할 수 있는데 seMouseCallBack ( windowName, onMouse, param = None ) 의 인자를 갖고있다. windowName은 마우스 이벤트를 실행 할 윈도우창의 이름이고 onMouse는 콜백함수의 이름을 지정해줄 수 있는 인자이다. 그리고 마지막에 있는 param 인자는 콜백함수에 전달할 데이터를 의미힌다. 여기서 onMouse 이벤트 처리함수의 형식을 따라서 만들어줘야하는데 onMouse ( eve..

Program/OPEN_CV 2022.05.02

[Open CV] OpenCV-Python 기초 사용법 _ 키보드 이벤트 처리하기

- 키보드 입력 대기함수 ( cv2waitkey(dealy==None) ) 위 함수는 이 전 강의에서도 많이 사용했었는데 키보드의 입력이 들어올때까지 계속해서 기다리는 함수이다. delay = 밀리초 단위 대기 시간. delay가 0보다 작거나 같으면 무한히 기다린다. 디폴트값은 0이다.그리고 키보드의 입력이 들어오면 retval로 반환을 해주는데 눌린 키 값의 ASCII 코드로 반환된다. 따라서 눌린 키보드의 값과 같을때 waitkey 함수를 끝내고 싶다면 '해당ASCII' 와 같을때로 끝내도록 작성하여 줄 수 있다. 그리고 예외적으로 키보드의 특수키를 입력받을수도 있는데 이는 cv2.waitKeyEX() 라는 함수를 사용하여 특수키를 입력받을 수 있다. 여기서 말하는 특수키는 insert, Delet..

Program/OPEN_CV 2022.05.01

[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기2

OpenCV에서는 cv2.VideoWriter 클래스를 사용하여 프레임을 동영상 파일로 저장할 수 있다. 약 5가지의 코덱,압축방식,색상,픽셀포멧을 사용할 수 있는데 DIVX XVID FMP4 X264 MJPG 등의 압축방식을 사용할 수 있다. 혹시 아래 강의를 따라하다가 동영상이 잘 실행이 되지않는다고하면 위 코덱을 따로 설치해야 한다. 근데 왠만한 window 10이상의 PC들은 위 코덱들이 설치 되있을 것이다. - 저장을 위한 동영상 파일 열기 ( cv2.VideoWriter ) fourcc 인자에서는 위 5가지의 압축방식을 입력해주면 해당 압축방식으로 저장할 수 있고 중요한건 GrayScale 영상을 저장하고싶으면 그대로 저장할 수 없고 TreuColor 영상으로 변환한 이후에 저장해야한다. 그리..

Program/OPEN_CV 2022.04.30

[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기1

Opencv에서는 VideoCapture 클래스를 사용하여 카메라와 동영상으로부터 Frame을 받아오는 작업을 한다. VideoCapture 라는 클래스를 만들고 Open() 의 함수가 카메라 or 동영상을 연결시키고 read() 함수를 계속 호출하여 현재 프레임을 읽어오는 처리를 기본적으로 사용한다. - 카메라 열기 ( cv.VideoCapture ) VideoCapture로 클래스를 열어주고 index의 인자에는 현재 장치관리자에 등록되어있는 카메라의 번호를 입력해준다. 자세히 들어가면 camera_id + domain_offset_id 인데 donmain_offset_id에 0을 입력해주면 운영체제가 알아서 연결해준다. 그래서 카메라 연결수에 맞춰서 인덱스를 입력해주면 된다. 이후 Open이 제대로..

Program/OPEN_CV 2022.04.29

[Open CV] OpenCV-Python 기초 사용법 _ OpenCV 그리기 함수

OpenCV에는 영상 데이터 위에 선이나 도형 텍스틀 그릴 수 있는 기능이 있다. 여기서 중요한건 직선 도형 문자열을 사용할때 영상데이터 자체를 변경을 한다는 점이다. 그래서 영상데이터가 훼손이 될수있기때문에 원본데이터를 백업하고 복사본을 만들어 그 위에 그리는 것이 좋다. 그리고 컬러 도형이나 선을 그리고싶을때에는 영상자체가 컬러 영상이어야지만 동작을 한다. 위 코드를 실행하면 아래 영상이 생성되는데 위 영상에서 사용된 함수들을 설명하면 - img = np.full ( (400,400,3),255,np.uint8 400 x 400 의 RGB성분을 가진 버퍼를 생성하고 모든 RGB값이 255인 영상을 uint8 크기의 형으로 생성한다. - 직선그리기 ( cv2.line ) 영상, 시작점과 끝점 , 선 색..

Program/OPEN_CV 2022.04.28

[Open CV] OpenCV-Python 기초 사용법 _ 마스크 연산과 ROI

ROI라고 하는 것은 Region of interest라고 하는 관심영역인데영상에서 내가 영상처리할 부분의 좌표나 픽셀등을 지정 , 설정해 놓는 것이다. 그리고 마스크연산은 내가 처리하고자하는 곳을 제외한 부분을 0또는 255의 픽셀값으로 구성하는 것이다. 보통은 Mask 픽셀값을 0으로 지정하여 ROI 연산을 할때 0이 아닌부분 ( 1이상인 부분 )을 보고 연산처리한다. OpenCV에서는 마스크 연산을 지원하는 함수들이 몇가지 있는데 이를 설명하면 - cv2.copyTo(src,mask,dst=None) -> dst 위 함수는 저번에 설명했었던 영상 전체 복사가 아닌 영상에서 마스크를 제외한 ROI 영역을 복사하는 함수인데 dst = None을 하게되면 입력받은 영상에 그대로 ROI만 따서 가져오는 기..

Program/OPEN_CV 2022.04.27

[Open CV] OpenCV-Python 기초 사용법 _ 영상의 생성, 복사, 부분 영상 추출

처음으로는 영상을 지정한 크기로 새로 생성할 수 있는데 numpy.emtpy zeros ones full 함수등이 있다. 위 함수들의 인자에는 shape가 있는데 이는 이 전 시간에 배운 shape를 넣어주면된다.GrayScale 은 width , height Color 는 width, height, 3 (채널값) 의 값을 넣어주면 된다. 그리고 dtype이라는 인자가 뒤에 나오게 되는데 기본 Default값이 float으로 지정되어있기때문에 영상으로 사용하기 위해서는 uint8값으로 꼭 지정해주어야 한다. empty 함수는 배열( 새로운 영상)을 만들고 픽셀값은 임의의 값으로 배정이된다.그래서 zeros라는 모든 픽셀값을 0으로 바꿔주는 또는 ones 라는 모든 픽셀값을 1로 바꿔주는 함수를 사용하여 ..

Program/OPEN_CV 2022.04.26

[Open CV] OpenCV-Python 기초 사용법 _ 영상의 속성과 픽셀 값 참조

일단 opencv 영상 데이터는 numpy.ndarray로 표현을 하는데 imread로 파일을 로드하게 되면 numpy.ndarray로 영상을 받게 되는데 ndarray의 속성을 살펴보면 ndim , shpe , size , dtype 등이 있는데 ndim은 차원 수와 같은데 몇차원 배열인지를 보여준다. 2면 GrayScale 3이면 Color Type이라고 볼 수 있다. shape는 각 차원의 크기, h,w 또는 h,w,3 ( 컬러 ) , h,w,4 ( png - alpha channel ) 로 표현된다. size는 전체 원소의 개수 dtype 은 원소의 데이터 타입으로, 영상 데이터는 unit8 ( 0~ 256 )이다. OpenCV 영상 데이터 자료형은 다양하게 있는데 간단하게 cv.CV_8U , c..

Program/OPEN_CV 2022.04.25

[Open CV] OpenCV-Python 시작하기 _ 실전코딩 ( 이미지 슬라이드쇼 )

- 특정 폴더에 있는 이미지 파일목록읽기 - 이미지를 전체화면으로 출력하기 - 일정시간동안 이미지를 화면에 출력하고, 다음이미지로 교체하기 ( 무한루프 ) 일단 특정 폴더에 있는 이미지파일 목록을 읽을 수 있는 함수는 2가지가 있는데 os.listdir() 또는 glob.glob() 함수를사용하면 읽을 수 있다. 일단 os나 glob을 import해주고 os를 import했을때는 file_list라는 변수에 os.listdir이라는 이미지 리스트 로드함수를 사용하게 되는데 file_list = os.listdir('.\\images')라는 폴더를 지정해주면 현재 프로젝트 폴더내에 있는 images라는 폴더에 접근하고 img_files = [file for file in file_list if file.e..

Program/OPEN_CV 2022.04.24

[Open CV] OpenCV-Python 시작하기 _ Matplotlib 사용하여 영상 출력하기

2022.04.23 금일은 Open CV의 Matplotlib라는 라이브러리에 대한 강의였다. 일단 Matplotlib이라는 라이브러리가 무엇인지부터 살펴봐야 할 것 같다. Matplotlib라이브러리는 함수의 결과값을 그래프, 차트, 히스토그램등으로 쉽게 그려줄 수 있도록 도와줄 수 있는Python 패키지이다 이를 이용하기 위해서는 이 전에 했었던 방법대로 하면 되는데 커맨드창에 pip install matplotlib라고 입력해주면 네트워크에 자동으로 연결되어 해당 라이브러리를 다운받아 올 수 있다. 위와같은 창이 뜨면 해당 라이브러리가 정상적으로 설치되었다는 뜻이다. 이후 중요한 건 영상을 로드할 때 GrayScale 영상인지 TrueColor 영상인지에 따라 Matplotlib 사용방법이 달라지는..

Program/OPEN_CV 2022.04.23
반응형