본문 바로가기

분류 전체보기

(171)
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..
how to install python package | library permanently in Colab? 코랩에 패키지를 설치하는 것은 매번 해줘야 되서 너무나 번거롭습니다. 이를 계속 유지해줄 수는 없을까요? Installing the package on the co-lab is a hassle because it has to be done every time. Can we keep this up? 이번 포스팅에서는 영구적으로 코랩에서 파이썬 패키지를 설치하는 방법을 다뤄 보겠습니다. 우선 본인의 구글 드라이브에 폴더를 하나 만들어주세요. In this posting, we will discuss permanently installing the Python package in colab. First, please create a folder on your Google drive. 코랩 노트북을 한 번이라도..
opencv 입문하기 2편 - 이미지 객체 속성 , 픽셀값 변경 이번 시간에는 opencv에서 이미지를 부를 때의 객체 속성과 픽셀 접근에 대해 코딩 및 설명 해보겠습니다. opencv 에서 이미지를 부르면 보통 BGR 순서로 부릅니다. 저희가 보는 컬러 이미지는 보통 RGB 순서입니다. 그러므로 순서의 변환이 필요합니다. 또한, opnecv 는 영상 데이터를 numpy.ndarray 로 표현합니다. numpy.ndarray 의 특징을 opencv 의 영상 관점에서 보면 ndim: 차원 shape - (h,w) : grayscale 영상 - 흑백 영상 - (h,w, 3) : 컬러 영상 size: 전체 픽셀 갯수 dtype: 원소의 데이터 타입 uint8 으로 이해하면 됩니다. 우선, 예제 영상 결과를 보고나서 코드로 설명하겠습니다. 제가 최초에 가져온 이미지는 위 사..