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..
데이터 사이언스 사용 설명서 검색 결과
아나콘다 프롬프트에서 패키지를 다운받는 경우, 종종 InvalidArchiveError가 발생하였다. 나는 머신러닝을 배우기 위한 과정에서 결정 트리를 시각화하는 graphviz / python-graphviz 패키지를 설치하는 과정에서 해당 에러가 발생하였다. 특히, 그 이후 에러의 내용을 살펴보면 m2w64-gcc-objc-5.3.0-6.tar.bz2.You probably need to delete and re-download or re-create this file. (이전에 해당 파일을 삭제한 경우, 이와 비슷한 형식이지만 이름만 바뀐 다른 파일이 동일하게 에러로 나타났다. ) 이런 내용을 포함하고 있다. 생소한 파일 확장자와 보지 못한 파일들을 삭제하고 재설치하라고 나오는데 , 해당 파일이 어..
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..
이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다. 또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다. 하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까? 이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다. 따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다. 이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다. F1 Score F1 Score는 정밀도와 재현율을 결합한 지표이다. 이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 ..
이전의 포스팅에서 실생활에 많이 쓰이는 정확도가 왜 머신러닝 분류쪽에서 주요한 성능 평가 지표로 사용될 수 없는지에 대해서 알아보았고, 정밀도와 재현율을 이해하기 위해서 오차 행렬의 각 요소(FN, FP, TN, TP)들이 의미하는 바를 알아보았다. 오차 행렬의 각 요소에 기반하여 정밀도와 재현율을 표현하자면, 정밀도 = TP / (FP + TP) 재현율 = TP / (FN + TP) 이렇게 수식처럼 나타내는 것이 계산을 하는 경우에는 편리하게 사용이 될 수 있으나, 정밀도와 재현율을 처음 접하는 사람들에게는 어떤 의미인지 이해하기 어려울 수 있다. 정밀도 = TP / (FP + TP) 분모를 보면 FP + TP 이다. FP는 Positive로 예측했지만 틀린 것을 의미하고, TP는 Positive로 예..
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...
머신러닝 평가 크게 보았을 때, 머신러닝의 과정 : 데이터 가공 / 변환 -> 모델 학습 / 예측 -> 평가 머신러닝 모델은 회귀와 분류로 나뉘어지는데, 회귀는 주로 실제 값과 예측 값의 오차 평균값에 기반하여 평가가 이루어진다. 분류는 우리가 직관적으로 알 수 있는 정확도(맞은 예측의 수 / 전체 예측의 수)로 평가하기도 하지만, 정확도보다는 다른 평가 지표를 사용하는 경우가 더 많다. 분류의 성능 평가 지표에는 - 정확도(Accuracy) - 오차행렬(Confusion Matrix) - 정밀도(Precision) - 재현율(Recall) - F1 스코어 - ROC AUC 분류에는 2개의 결괏값을 가지는 이진분류와 다수의 결괏값을 가지는 멀티분류가 있는데, 위의 여섯가지 성능 측정 지표는 이진 분류에 ..
이전 글에서 살펴본 매칭은 영상 전체를 바탕으로 비교하는 방법이기 때문에 비교할 영상이 비슷할 때만 좋은 결과가 나타난다. 즉, 물체의 변환이 있거나 회전이 있으면 좋은 결과를 얻을 수 없는 단점을 지닌다. 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..
최근댓글