🐍Python/OpenCV

    [OpenCV] 04-1. Changing Colorspaces

    이 튜토리얼에서는 하나의 컬러 공간의 이미지를 다른 공간으로 변환하는지를 배울 것이다. (ex. BGR -> Gray / BGR -> HSV 등)추가적으로, 비디오에서 색이 있는 객체를 추출하는 기능을 만들어 볼 것이다.cv2.cvtColor(), cv2.inRange()에 대해서 배울 것이다.Changing Color-spaceOpenCV에는 150개 이상의 색상 공간 변환 방법이 있다. 하지만 하지만 가장 자주 널리 사용되는 BGR -> Gray 와 BGR -> HSV를 볼 것이다.색상 변환에서, cv2.cvtColor(input_img,flag) 함수를 사용하는데 flag는 변환의 종류를 결정한다.BGR -> Gray 변환에 대해서는 cv2.COL..

    [OpenCV] 03-3. Performance Measurement and Improvement Techniques

    이미지 전처리과정에서, 초당 수많은 기능들을 다루기 때문에 코드가 정확한 해결책을 줄 뿐만 아니라, 빨라야하는게 필수적이다. 이번 장에서는 다음의 것들을 배울 것이다.코드의 성능을 측정코드의 성능을 향상시키는 조금의 방법cv2.getTickCount(), cv2.getTickFrequency() 함수OpenCV와 별개로, Python에서는 실행 시간을 측정할 수 있는 ‘time’ 모듈이 있다. 또 다른 모듈로는 ‘profile’로, 어떤 코드에 얼마나 시간이 걸렸는지, 함수가 몇 번 불렸는지등 자세하게 코드에 대한 리포트를 보여준다. 하지만 IPython을 사용중이라면, 이 모든 기능은 객체 지향적인 방식으로 통합된다. 중요한 몇 가지를 볼 것이고, 자세한 내용은 아래의 내용을 보면 된다!Measurin..

    [OpenCV] 03-2. Arithmetic Operations on Images

    덧셈, 뺄셈, 비트연산 등 이미지에 대한 다양한 산술 기능을 배워볼 것이다.cv2.add(), cv2.addWeighted() 에 대해서 알아볼 것이다.Image Additioncv2.add() 함수를 통해서 두 개의 이미지를 더할 수 있고 혹은 res = img1 + img2 처럼 numpy 연산으로도 가능하다. 두 개의 이미지는 동일한 깊이와 타입이거나 두 번째 이미지가 그냥 scalar이어도 된다.import numpy as np import cv2 x = np.uint8([250]) y = np.uint8([10]) # Saturation 연산 print(cv2.add(x,y)) # 255이상이어서 255로 표현함 # Modulo 연산 print(x+y) # 256보다 크기에 256으로 나눠준다...

    [OpenCV] 03-1. Basic Operations on Images

    픽셀 값에 접근 및 수정이미지 특성에 접근ROI를 세팅한다.(Region of Image)이미지를 합치고 나눈다.이번 섹션에서는 OpenCV보다는 Numpy가 더 주로 사용된다. OpenCV로 더 잘 최적화된 코드를 작성하려면 Numpy에 대한 충분한 지식이 필요하다.Accessing and Modifying pixel values먼저 컬러 이미지를 불러오자.import cv2 import numpy as np img = cv2.imread('soccer.jpg') 행과 열 좌표로 픽셀 값에 접근할 수 있다. BGR 이미지의 경우, 파랑 초록 빨강 값의 array를 출력한다. 흑백 이미지의 경우, 그냥 강도에 대응하여 출력된다.px = img[100,100] print(px) ## [50,64,62] #..

    [OpenCV] 02-5. Trackbar as the Color Palette

    이번에는 OpenCV 창에 trackbar를 결합하는 것을 학습해볼 것이다. cv2.getTrackbarPos(), cv2.createTrackbar() 함수에 대해서 배워볼 것이다. Code Demo색을 조절할 수 있는 간단한 기능을 만들어 볼 것 이다. BGR 색으로 지정할 수 있는 세가지 trackbars를 보여주는 창을 갖고 있다. Trackbars를 끌면 그에 따라 창의 색이 바뀐다. 기본적으로 초기 색을 검정색이다.cv2.getTrackbarPos() 함수에 대해서, 첫 번째 argument는 trackbar의 이름이고, 두 번째는 창의 이름, 세 번째는 초기값, 네 번째는 최대 값, 다섯 번째는 매 trackbar 값이 변할 때 실행되는 callback 기능이다. Callback 기능은 항상..

    [OpenCV] 02-4. Mouse as a Paint-Brush

    OpenCV에서의 마우스 이벤트 다루는 법을 배울 것이다.cv2.setMouseCallback() 을 배워 볼 것이다. Simple Demo더블 클릭하면 이미지 위에 원이 생기는 간단한 기능을 만들어보자.먼저, 마우스 이벤트가 발생할 때, 마우스 callback 기능을 만든다. 마우스 이벤트는 좌버튼 아래로, 좌버튼 위로, 좌 버튼 더블 클릭등으로 마우스와 관련된 것이면 된다. 모든 마우스 이벤트에 대해 좌표 (x,y)를 주는 것이다. 이 이벤트와 위치를 가지고, 원하는 모든 것을 할 수 있다. 모든 이벤트를 나열하려면 다음 코드를 실행하면 된다.import cv2 events = [i for i in dir(cv2) if 'EVENT' in i] print(events) 위 코드를 실행한 결과는 다음과..