파이썬
-
[python, opencv] 판별된 오브젝트가 특정 영역 내부에 있는지 판단하기(다각형 폴리곤을 이용한 마스크 만들기, 작업구역 탐지, 위험구역 탐지)Data Science/컴퓨터비전 2023. 5. 30. 19:25
다양한 모양의 작업구역 등을 설정하고 이에 탐지된 오브젝트가 구역내 소속되어 있는지 판단하는 방법을 고민하던 중 폴리곤으로 mask를 만들고 and 연산을 하면 간단하다고 하여 이를 작성해본다. 실제 이미지 및 오브젝트 검출 부분까지 글에 가져오면 너무 분량이 많아져서, 검출된 오브젝트의 좌표값이 있다고 가정하고 간단한 예시로 진행하겠다. 1. 이미지 120*100짜리 이미지가 있다고 가정한다. img_mask = np.zeros((100,120,1),dtype=np.uint8) plt.imshow(img_mask) 2. 특정 영역 마스크 구역 생성(작업구역, 위험구역 등) 작업구역과 같이 사용자가 지정하고싶은 특정 구역을 나타내는 마스크를 만들어준다. 여러개의 다각형으로 다양한 구역을 표현 가능하다. ..
-
[Python, opencv] 다각형 그리기 코드 구현(cv2.polylines)Data Science/컴퓨터비전 2023. 5. 30. 18:56
파이썬에서 다각형을 그리기 위해서는 opencv를 활용하여 아래와 같이 그릴 수 있다. import cv2 import numpy as np # 0으로 채워진 이미지(array) 생성 image = np.zeros((150,150,3),np.uint8) # 다각형의 좌표를 순서대로 입력, 입력 순서대로 선을 그리게 된다 pts1 = np.array([[20,20],[130,70],[90,90],[80,130]],dtype=np.int32) # cv2의 polylines로 다각형 그리기 # cv2.polylines(원본그림, 좌표리스트, 마지막점과 첫점 연결 여부, 선색, 선 굵기) cv2.polylines(image,[pts1],True,(255,255,255),4) plt.imshow(image) 세번..
-
머신러닝 Cross Validation 구현하기, 파이썬 코드 예시(K-fold, sklearn.model_selection.RepeatedKFold)Data Science/Pandas & Numpy&Scikit-learn 2022. 11. 22. 11:51
1. Cross Validation이란? 2. Reggression 예제에서의 K-fold 파이썬 코드 구현 2.1 라이브러리 호출 import seaborn as sns import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler, OneHotEncoder from sklearn.model_selection import train_test_split, RepeatedKFold from xgboost import XGBRegressor 2.2 데이터셋 준비 seaborn 라이브러리를 활용하여 tips 데이터를 불러온다. 해당 데이터셋은 고객 정보를 활용하여 얼마의 tip을 줄지 판단하는 회귀(Reggressor)..
-
[Python] 최장 증가 부분 수열 구현하기프로그래밍/알고리즘 2022. 9. 22. 09:35
이번 글에서는 파이썬 언어로 최장 증가 부분 수열을 구현한다. 1. 최장 증가 부분 수열 증가 부분 수열이란, 기존의 수열에서 임의의 숫자들을 뽑았을 때 오름차순인 경우를 의미한다. 이때 연속하지 않아도 되며 뽑은 숫자들의 순서를 바꿀 수는 없다. 이렇게 생성될 수 있는 증가 부분 수열중에 가장 긴 길이를 가지는것이 최장 증가 부분 수열이다. 1 -1 2 0 1 1 2 3 -2의 수열이 있다면, 이중에서 -1 0 1 2 3 을 뽑아서 5의 길이를 가지는 최장 증가 부분 수열을 찾을 수 있다. 2. 동적 프로그래밍으로 구현 2.1 코드 예시1 # 제공된는 수열 input_lst = [1,-1,2,0,1,1,2,3,-2] # 동적 프로그래밍을 위한 기록 리스트 T = [0]*len(input_lst) # 첫..
-
[Python] bisect 함수를 통해 이진탐색 구현하기프로그래밍/알고리즘 2022. 9. 21. 22:08
이번 글에서는 파이썬 언어에서 bisect 함수를 통해서 이진탐색을 구현한다. 1. Bisect 함수 리스트 lst와 숫자 x가 있을 경우(lst는 정렬되어 있다고 가정한다), x가 lst의 어느 위치에 들어가야 정렬된 리스트가 유지되는지 반환한다. from bisect import bisect lst = [1,3,5,7,9] x = 7 # lst에 '7'이라는 값이 어디에 들어가야 정렬된 리스트를 유지하는지 bisect(lst,x) # 4라는 인덱스값을 반환함 2. Bisect의 네가지 케이스 2.1 동일한 값이 있을 경우 lst에 동일한 값이 있기 때문에 '7'의 다음 인덱스인 4를 반환한다. lst = [2,3,5,7,9] x = 7 bisect(lst,x) #=> 4 2.2 동일한 값이 없을 경우..
-
[Python] 최소신장트리(Minimum Spanning Trees, MST) 구현하기 by Prim프로그래밍/알고리즘 2022. 9. 21. 10:57
이번 글에서는 파이썬 언어를 사용하여 Prim방식 기반 최소신장트리를 구현한다. 1. 문제 가중치가 있는 무방향성 그래프가 주어졌을 때, 최소 신장 트리(MST, Minimum Spanning Tree)의 가중치의 합을 구하라 2. 파이썬 구현 기본적으로 주어지는 정보 import heapq node_n, edge_n = 4,6 graph_info = [(0,1,6),(0,2,7),(2,3,2),(1,2,5),(1,3,3),(0,3,9)] start_node = 0 # 탐색을 시작할 노드 주어진 그래프로부터 인접 딕셔너리 생성(인접 리스트로 해도 상관없음) 무방향 그래프이기때문에 node_a,node_b의 간선정보를 서로 넣어준다 # 인접 딕셔너리 생성 adj_dic=dict([(n,[])for n in..
-
[Python]이진탐색 재귀함수로 구현해보기(recursion binary search)프로그래밍/알고리즘 2022. 9. 20. 20:24
이번 글에서는 파이썬 언어를 사용하여 재귀함수 기반 이진탐색을 구현합니다. 1. 이진탐색으로 같은 값 찾기 문제 리스트와 목표값이 주어졌을 때 값이 존재한다면 인덱스를 반환하고 없다면 -1을 반환해라. 이때 리스트는 정렬되어 있다. def binary_search(lst,start_p,end_p,target): mid_p = (start_p+end_p)//2 # 중앙 포인트 생성 #전체 탐색후 값이 없다면 -1 반환 if start_p>=end_p: return -1 # 중앙값이 목표값이라면 해당 인덱스 반환 if lst[mid_p] == target: return mid_p # 목표값보다 중앙값이 크다면 시작값부터 중앙값 이전까지 다시 탐색 elif target < lst[mid_p]: return b..