생성 DataFrame의 열 생성은 쉽게 만들 수 있다.(판다스의 가장 큰 장점이기도 하다.) 일단 2가지로 나눌 수 있다. 1) 새로 만드는 열의 모든 데이터를 상수로 채워 넣는 경우 이 경우는 주로, 새로운 열(피처)을 만들기 위해서 해주는 경우가 많다. 어려울 것 없이 titanic_df['Age_0'] = 0 #새로 만들어진 'Age_0'열의 모든 value 값들이 0으로 채워진다. titanic_df.head(3) 'Age_0'이라는 열이 존재하는 열이 아니라, 새로 생성할 열의 이름을 대괄호 안에 작은 따옴표로 지정해 준 뒤 등호 오른쪽에 상수를 넣으면 해당 열의 모든 Value 값들이 해당 상수 값으로 채워지는 것을 확인 할 수 있다. 2) 기존에 있는 열(column)을 이용하여 새로운 열..
데이터 분석 & 시각화 검색 결과
특징을 나타내는 값을 매칭하기 위해서는 회전이나 크기 등에 영향이 없어야 하며, 이를 위해서는 feature descriptor(특징 디스크립터)가 필요하다. 특징 디스크립터는 keypoint의 주변의 밝기나 색상 등의 정보를 표현한 것으로, keypoint의 주변 픽셀을 일정한 크기로 나눈 후 각 영역에 대한 pixel의 그래디언트를 계산한 것이 된다. 특징 디스크립터를 활용한 검출기의 종류는 다음과 같다. ORB(Oriented FAST and Roteted BRIEF) FAST 코너 검출기와 BRIEF의 회전이 고려되도록 한 것 SIFT(Scale Invariant Feature Transform) 크기 변화에 관계없이 특징 검출이 이루어지도록 한 것 SURF(Speed Up Robust Featu..
import cv2 import numpy as np import math from random import shuffle 도형그리기 캔버스 만들기 img = np.full((512, 512, 3), 255, np.uint8) 도형을 그리기 위한 공간을 생성한다. 위 코드는 (512, 512, 3)의 크기에 255라는 값으로 채워진 numpy array를 생성하는 코드이다. 데이터 타입은 uint8(0~255의 정수)이다. 여기서 배열을 채우는 값이 단일 상수로 되어있으면 흑백의 binary 값으로 인식하여 0이면 검은색, 255이면 흰색으로 채워지게 되고, (0, 0, 255)처럼 3개의 요소를 가진 벡터로 되어있으면 BGR 값으로 인식하여 해당 색으로 값이 채워지게 된다. cv2.line(img, p..
import cv2 import numpy as np 카메라로 영상 재생 cv2.VideoCapture(0) → 객체생성 cv2.VideoCapture(0) 함수를 사용해 VideoCapture 객체를 생성한다. VideoCapture의 인자로는 ★장치 인덱스(어떤 카메라를 사용할 것인지, PC에 웹캠이 2개인 경우 첫번째 웹캠은 0, 두번째 웹캠은 1로 지정할 수 있다.) 또는 비디오 파일 이름을 지정한다. def showVideo(): try: print("카메라를 구동합니다.") cap = cv2.VideoCapture(0) except: print("카메라 구동 실패") return cap.set(3, 1280) cap.set(4, 720) while True: ret, frame = cap.re..
Pandas import pandas as pd import numpy as np 파이썬으로 데이터를 다루는 경우 정형화된 데이터는 주로 Pandas 와 Numpy를 통해서 다룬다. 하지만, Numpy는 저수준 API가 대부분 이므로, 여러가지 고급진 기능을 다양하게 사용할 수 있는 Pandas를 애용하는 사람들이 많다. 또한, Pandas는 리스트, 넘파이 등의 내부 데이터를 비롯하여, 코드 외부에 있는 csv등의 파일도 바로 Pandas객체로 만들수 있다는 장점을 가지고 있다. pd.read_csv() 판다스를 사용할 때, 가장 첫번째로 하게 되는 것은 아마 pd.read_csv()일 것이다. 이때, 가장 중요한 것은 파일의 경로를 제대로 쓰는 것이다. 해당 코드와 파일이 동일한 위치에 있을 경우에는..
import cv2 import numpy as np 이미지 읽기 cv2.imread(filename [, flag]) img = cv2.imread(filename, cv2.IMREAD_COLOR) 첫번째 인자에는 이미지 파일을, 두번째 인자에는 이미지 파일을 읽는 방식을 나타내는 플래그를 나타냄. flag는 대표적으로 3가지를 자주 사용함 1. cv2.IMREAD_COLOR : 컬러이미지 로드, 이미지의 투명한 부분(알파채널)은 모두 무시됨. 디폴트 플래그로 정수값은 1 2. cv2.IMREAD_GRAYSCALE : 흑백이미지 로드. 정수값은 0 3. cv2.IMREAD_UNCHANGED : 알파채널을 포함하여 이미지 '그대로' 로드. 정수값은 -1 cv::ImreadModes 참고 cv2.imsho..
OpenCV는 다양한 이미지 특징(feature) 처리 기능을 제공하는데 이 기능은 무료 라이선스가 아니다. 따라서 아니콘다나 pip 명령으로 내려받은 OpenCV 패키지에는 이 기능이 제외되어 있다. 이 기능까지 사용하고 싶은 개인 사용자는 OpenCV 소스코드를 내려받아 직접 컴파일을 해서 사용해야 한다. OpenCV를 컴파일하려면 GNU GCC C/C++ 컴파일러와 CMake 전처리기가 설치되어 있어야 하므로 윈도우나 맥은 빌드하기 까다롭다. 되도록 리눅스 운영체제나 도커를 사용하기를 권장한다. cjy8922/opencv_practice Contribute to cjy8922/opencv_practice development by creating an account on GitHub. github...
이전 글에서 살펴본 매칭은 영상 전체를 바탕으로 비교하는 방법이기 때문에 비교할 영상이 비슷할 때만 좋은 결과가 나타난다. 즉, 물체의 변환이 있거나 회전이 있으면 좋은 결과를 얻을 수 없는 단점을 지닌다. pixel의 변화가 급격하게 일어나는 곳의 코너에 초점을 두어 영상 속의 여러 특징을 얻어내는 것이 필요하다. 1. Harris 코너 검출 Harris 코너 검출은 Sobel 필터로 edge를 찾아낸 다음, Gradiant 변화량을 측정해서 x축과 y축으로 동시에 급격하게 변화한 지점을 코너로 판단한다. import cv2 import numpy as np img = cv2.imread('weapon/search/vector.jpg') gray = cv2.cvtColor(img, cv2.COLOR_B..
서로 다른 두 이미지나 영상을 비교해서 비슷하거나 같은 객체를 포함하는 것을 찾는 영상 매칭을 시도하고자 한다. 영상 매칭은 영상에서 유의미하다고 판단되는 특징을 숫자로 변환해서 숫자를 비교하는 방법을 사용한다. 이를 찾아내는 것이 쉽지 않으며, 영상 속의 특징을 변환한 숫자를 특징 디스크립터(feature descriptor)라고 한다. 1. 평균 해시 매칭 * 배틀그라운드 무기 일부를 이미지로 활용합니다. 평균 해시란 어떠한 영상이든지 동일한 숫자로 변환되며 숫자를 얻기 위해서 평균 값을 이용하는 것이다. 평균을 얻기 전에 영상을 특정 크기로 지정하고 pixel 전체의 평균을 계산한 뒤 각 pixel이 평균보다 작으면 0, 크면 1로 바뀌게 한다. 그러면 pixel 값을 한 줄로 늘어선 2진수로 볼 ..
edge 탐지 글에서 언급한 것처럼, 객체 인식을 위해서는 배경과 전경을 분할하는 것이 필요하다. 영상 분할은 경계선이나 영역으로 분할하는데, 임계값(threshold)는 cv2.threshold()를 활용하면 된다. Hough 변환은 Computer Vision에서 사용하는 용어로, 선분 등의 추출을 위해 평면 상에 투영하는 것을 의미한다. 필터 처리 2 - 에지 탐지 에지 탐지란 배경과 전경을 분리하는 작업이며, 객체 인식을 위해서는 에지 탐지가 필수적이다. 이전 글에서 살펴본 블러링이 영상을 흐릿하게 했다면, 에지 탐지를 통해 경계에 있는 pixel만 골� dsbook.tistory.com 1. Canny Edge 검출 필터 처리 2 - 에지 탐지 글에서는 Sobel, 라플라시안 필터 등을 통해 검..
최근댓글