import cv2 import numpy as np import matplotlib.pyplot as plt 전역 임계처리 (Global Thresholding) 하나의 이미지에 전역으로 적용될 하나의 문턱값을 이용해 thresholding 기능을 제공하는 함수가 있다. cv2.threshold(src, thresh, maxval, type [, dst]) → retval, dst threshold 함수는 멀티 채널 배열의 thresholding을 픽셀단위로 적용한다. 즉 컬러 이미지에도 사용할 수 있으나, 주로 Grayscale 이미지에서 바이너리 이미지를 얻기 위해 사용하거나 픽셀 값 중 너무 크거나 작은 값들을 필터링하여 노이즈를 제거하기 위해 사용한다. 1. src : threshold에 적용할..
데이터 분석 & 시각화 검색 결과
지정된 객체의 위치의 이동 상황을 지속적으로 찾는 것을 객체 추적이라고 한다. 스포츠 경기에서 사람의 시선은 일반적으로 공이나 선수를 따라 움직이게 된다. 어떤 객체를 한번 인식하고 난 후에는 객체의 움직임을 쉽게 파악할 수 있다. 그러다가 움직임을 놓치면 다시 주변 환경을 파악해서 원하는 객체를 찾게 된다. 컴퓨터 역시 객체를 인식하고 검출하기 위해 사람이 눈을 움직이는 것처럼 객체를 추적하는 방법이 필요하다. 컴퓨터는 연속적인 장면에 대한 흐름에 따라 객체를 파악해낸다. OpenCV에서 지원되는 객체의 움직임을 파악할 수 있도록 영상에서 배경을 제거해주는 기능을 통해서 객체 인식이 가능하다. BackgroundSubtractorMOG2 import cv2 import numpy as np captur..
DataFrame의 [ ] 연산자 넘파이와 DataFrame 간 가장 유의해야 할 연산자가 바로 '[ ]' 연산자이다. 넘파이 - 행의 위치, 열의 위치, 슬라이싱 범위 등을 지정하여 데이터를 가져올 수 있었다. DataFrame - 칼럼만 지정할 수 있는 칼럼 지정 연산자로 이해를 하는 것이 가장 좋다. (추가적으로, 인덱스로 변환 가능한 표현식도 들어갈 수 있다. ) print('단일 칼럼 데이터 추출 : \n', titanic_df['Pclass'].head(3)) print('\n여러 칼럼의 데이터 추출: \n', titanic_df[['Survived', 'Pclass']].head(3)) print('[] 안에 숫자 index는 KeyError 오류 발생 : \n', titanic_df[0])..
인덱스 판다스에서 인덱스는 없어서는 안될 필수적인 요소이다. 파일을 로딩해서 .index 매서드를 통해서 인덱스를 가져올 수 있다. 이 때, 1차원 array 형태가 반환되고, ndarray처럼 단일 값을 반환하거나, 슬라이싱 하는 것도 가능하다. import pandas as pd import numpy as np #원본 파일 다시 로딩 titnaic_df = pd.read_csv('titanic_train.csv') #Index 객체 추출 indexes = titanic_df.index print(indexes) #Index 객체를 실제 값 array로 변환 print('Index 객체 array 값 : \n', indexes.values) print(type(indexes.values)) print..
import cv2 import numpy as np Digital Image 디지털 이미지는 2차원 행렬의 형태로 표현이 된다. 행과 열로 이루어진 격자를 pixel라고 하며, pixel로 이루어진 이미지를 bitmap image라고 한다. 각 pixel의 위치는 영상좌표와 행렬 위치, 2가지로 표현할 수 있다. 좌상단 꼭짓점을 중심으로 영상좌표는 (y, x)로 표현하고, 행렬위치는 (row, column)로 표현한다. OpenCV 에서는 영상좌표와 행렬 위치, 2가지 형태가 사용되기 때문에 유의해야 한다. Binary Image Binary Image 는 픽셀당 1bit로 표현하는 이미지를 의미한다. 오직 흰색(1)과 검은색(0)으로만 표현이 된다. Binary Image를 만드는 방법에는 두 가지가..
이미지 비트연산 이미지는 AND, NOT, OR, XOR 의 비트연산이 가능하다. 이미지 비트연산은 이미지에서 특정 영역을 추출하거나 직사각형 모양이 아닌 ROI를 정의할 때, 이미지에서 바탕을 제거하고 2개의 이미지를 합칠 때에 유용하게 사용할 수 있다. 이때, 중요한 것은 비트 연산할 이미지의 크기가 동일해야 한다는 것이다. def bitOperation_black_bg(hpos, vpos): img1 = cv2.imread('iceland-1979445_1280.jpg') img2 = cv2.imread('opencv_logo.png') rows, cols, channels = img2.shape roi = img1[ vpos:vpos + rows, hpos:hpos + cols ] img2gray..
캐스케이드 분류기는 Object Detection이 가능한 OpenCV의 대표적인 API이다. 초기에는 얼굴 인식을 위한 목적으로 만들어졌고, 최근에는 대부분의 물체 인식까지 가능하다. OpenCV는 얼굴 인식에 대해 훈련된 데이터(haarcascade)를 XML 형태로 제공한다. OpenCV의 sources/data/haarcascades 폴더 내에 포함된 파일로 얼굴 인식이 가능하다. Haarcasacade를 이용한 얼굴 인식 import cv2 import numpy as np img = cv2.imread('faces.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Cascade 분류기 생성 cascade = cv2.CascadeClassifier('..
import matplotlib.pyplot as plt import numpy as np import cv2 def bgr_to_rgb(imgfile): b, g, r = cv2.split(imgfile) imgfile = cv2.merge([r, g, b]) return imgfile 이미지 더하기 두개의 이미지를 더하는 데는 2가지 방법이 있다. 하나는 + operator를 사용하여 연산하는 방법과 다른 하나는 opencv의 add함수를 사용하는 것이다. 두 방법 모두 서로 다른 이미지를 더하지만 더하는 방식에는 그 차이가 있다. img1 + img2 우리가 opencv의 imread 함수로 이미지를 불러들였을 때, 그 이미지가 numpy array의 형식을 가지고 있으므로 img1과 img2를 더..
import cv2 import numpy as np 이미지 속성 1. img.shape : 이미지 해상도 및 채널 수 (height, width, channel), (행, 열, 채널) 2. img.size : 이미지 크기 (byte 단위) 3. img.dtype : 이미지 데이터 타입 img = cv2.imread('bald-eagle-5463386_1280.jpg') print(img.shape) print(img.size) print(img.dtype) cv2.imshow('Show Image', img) cv2.waitKey(0) cv2.destroyAllWindows() 이미지 픽셀 값 얻고 수정해보기 한 장의 이미지는 지정된 크기의 BGR 값들의 배열로 이루어져 있다. 예를들어 10 * 10 ..
import cv2 import numpy as np 트랙바 만들기 cv2.createTrackbar(trackbarName, windowName, value, count, onChange) cv2.createTrackbar('B', 'color_palette', 0, 255, onChange) 이 함수는 트랙바를 지정된 윈도우에 생성하는 함수이다. 1. trackbarName : 트랙바 이름 2. windowName : 윈도우 이름 3. value : 트랙바 시작 값 4. count : 트랙바 끝 값 5. onChange : 트랙바 이벤트 발생시 수행되는 TrackbarCallback 콜백함수 TrackbarCallback :: def onChange(x) createTrackbar 함수에서 마지막 인..
최근댓글