본문 바로가기

머신러닝,딥러닝/opencv

(8)
opencv 입문하기 7-2편 HSV, 특정 색상 추출(inRange) 1. HSV HSV 색 공간 또는 HSV 모델은 색을 표현하는 하나의 방법이자, 그 방법에 따라 색을 배치하는 방식이다. 색상(Hue), 채도(Saturation), 명도(Value)의 좌표를 써서 특정한 색을 지정한다. 비슷한 것으로 HSL(Lightness), HSI(Intensity) 등이 있다. RGB가 색을 빨강, 초록, 파랑의 조합으로 표현한다면, HSV는 우리가 보는 그대로의 색을 Hue 채널로 나타낸다. 그리고 그 색의 진하고 연한 정도를 Saturation 채널로 표현하고, 밝기를 Value로 결정한다. RGB 색 공간보다는 좀 더 우리들이 색을 판단하는 과정과 유사한 것이 HSV 색 공간이다. 예를 들어 노란색을 표현하고자 하면, RGB 색 공간은 빨강과 초록의 조합으로 노랑을 표현해야..
opencv 입문하기 7-1편 histogram stretching, equalization 1. 히스토그램 히스토그램은 값 또는 구간별 관측값의 갯수를 표현한 것입니다. 이미지 영역에서 히스토그램은 '이미지를 구성하는 픽셀값 분포'에 대한 그래프 입니다. X축은 픽셀값이고 범위는 0~255, Y축은 이미지에서 해당 픽셀값을 가진 픽셀의 개수입니다. 갯수로 표현시 영상의 크기에 따라 빈도 경향이 달라지므로 전체 픽셀수로 나눈 정규화된 히스토그램Normalized histogram) 을 사용합니다. 흑백 레나 이미지로 간단하게 히스토그램을 그려보면, 처럼 나옵니다. """Histogram""" import os import cv2 import matplotlib.pyplot as plt src = cv2.imread( 'lenna_2.jpg', cv2.IMREAD_GRAYSCALE) hist = ..
opencv 입문하기 6편 트랙바, 산술 연산 1. 트랙바 cv2.createTrackbar(trackbarName, windowName, value, count, onChange) trackbarName 트랙바 이름 windowName 트랙바를 포함하는 윈도우 이름 value 트랙바 초기값 count 트랙바 최댓값(defalut = 0) onChange 트랙바 값이 변경될떄마다 호출할 콜백 함수 이름 콜백 함수는 아래처럼 사용됨 onChange(pose) * 트랙바를 이용한 grayscale 조절 * import cv2 import numpy as np def level_change(pos): value = pos * 8 if value >= 255: value = 255 img[:] = value cv2.imshow('img', img) img ..
opencv 입문하기 5편 마우스 이벤트(2) 지난 번에 하던 마우스 이벤트의 예제를 조금 더 해보겠습니다. 1) 마우스가 지나간 길을 따라 선을 그려주는 프로그램 선이 뭔가 투박해서 보기가 안 좋습니다. 일단 위 코드는 아래 와같습니다. # 마우스가 지나는 길을 따라 선을 그려주는 프로그램 # 이 때, 선을 그리다 보면 뭔가 끊어지는 듯한 느낌이 있다는 이슈가 생김. import cv2 import numpy as np def mouse_fn(event, x, y, flags, param): global img if event == cv2.EVENT_LBUTTONDOWN: print('EVENT_LBUTTONDOWN: %d, %d' % (x, y)) elif event == cv2.EVENT_LBUTTONUP: print('EVENT_LBUTTON..
opencv 입문하기 4편 키보드, 마우스 이벤트(1) 이번 시간에는 opencv 에서의 키보드,마우스 이벤트에 다뤄 보겠습니다. 1. 키보드 이벤트 ● 키보드 입력 대기 cv2.waitKey(delay=None) -> retval delau 매개변수에서 ms(밀리세컨즈) 단위 시간은 (1초=1000)입니다. delay
opencv 입문하기 3편 영상생성,추출, 그리기 함수 이번에는 앞시간에 했던 것을 응용해서 간단한 영상을 생성해보겠습니다. opencv 의 영상 타입들은 모두 numpy.ndarray 라고 했습니다. 그리고 dtype 이 uint8 이므로 2^8 이니깐 그 범위는 0~255 라고 설명한 바 있습니다. 1) 영상 생성 그러면 이를 토대로 numpy array를 그리고 2차원, 3차원에 범위 안의 값들을 넣으면 영상(=이미지)을 생성할 수 있습니다. 5개의 이미지를 그려봤습니다. 아래 이미지 중에서 2차원과 3차원 구별이 가시나요? 자, 위 영상들을 생성하는 코드들입니다. import numpy as np import cv2 img1 = np.empty((160, 280), dtype=np.uint8) # grayscale img2 = np.zeros((160..
opencv 입문하기 2편 - 이미지 객체 속성 , 픽셀값 변경 이번 시간에는 opencv에서 이미지를 부를 때의 객체 속성과 픽셀 접근에 대해 코딩 및 설명 해보겠습니다. opencv 에서 이미지를 부르면 보통 BGR 순서로 부릅니다. 저희가 보는 컬러 이미지는 보통 RGB 순서입니다. 그러므로 순서의 변환이 필요합니다. 또한, opnecv 는 영상 데이터를 numpy.ndarray 로 표현합니다. numpy.ndarray 의 특징을 opencv 의 영상 관점에서 보면 ndim: 차원 shape - (h,w) : grayscale 영상 - 흑백 영상 - (h,w, 3) : 컬러 영상 size: 전체 픽셀 갯수 dtype: 원소의 데이터 타입 uint8 으로 이해하면 됩니다. 우선, 예제 영상 결과를 보고나서 코드로 설명하겠습니다. 제가 최초에 가져온 이미지는 위 사..
opencv 입문하기 1편 - 이미지 reading 요즘 opencv를 주말마다 공부하고 있는데 내용을 정리 차원에서 포스팅 하겠습니다. opencv 설치는 다른 포스팅에서 다룬적 있으니 참고해주세요 :) 시작하겠습니다. 이미지까지 통칭해서 '영상'이라고 부르겠습니다. 영상 = 동영상 or 이미지 임을 사전에 정의하고 시작하겠습니다. 1) cv2.imread(filename, flags =None) - filename: 불러올 영상 파일 이름 - flags : 영상 불러오기 옵션 - 위 메서드의 결과는 numpy.ndarray 로 됩니다. flags 의 옵션은 아래와 같습니다. 함수 설명 cv2.IMREAD_COLOR BGR 컬러 영상으로 읽기 (defalut) cv2.IMREAD_GRAYSCALE 그레이스케일 영상으로 읽기 cv2.IMREAD_UNCHA..