본문 바로가기

전체 글204

[파이썬] DAY16 네트워크 계층 & 스레드 동작 제어 통신 관련 코드 2개 주실 거임 채팅 프로그램(스레드 쓴 것) 다 잡을 수 있음 , 이미 채팅 중인 사람과 채팅 가능 채팅 프로그램(스레드 안 쓴 것) 통신 묶어서 설명해드릴거임 1. 스레드 동시성과 병렬성(꼭 알고 가자) 동시에 끝나기 위해 하나의 코어가 여러 개의 스레드를 맡아서 번갈아가면서 한다. 스레드 스케줄링 스케줄링은 선입선출로 큐로 작업되어있다. main문에서는 return이 나올 때, 주로 마지막 문장이 끝났을 때 스레드가 종료된다. def main(): for i in range(10): print("동작") if i == 5: return if __name__ == "__main__": main() for문 한바퀴 도는 데 1초가 걸린다고 하고 같은 main문 6개를 10개의 스레드에 .. 2022. 2. 9.
[파이썬] DAY15 네트워크 네트워크 통신 쓰레드 순으로 공부하고자 한다. 1. 네트워크란? 여러 대 컴퓨터가 통신 회선으로 연결된 것 지역 네트워크: 학교 내부 네트워크 홈 네트워크 < 지역 네트워크 < 인터넷 2. 서버와 클라이언트 서버: 서비스 제공하는 프로그램 ex) 웹 서버 클라이언트: 서비스를 받는 프로그램 ex) 웹 브라우저 3. TCP(Transmission Control Protocol)와 IP(Internet Protocol) 프로토콜은 정해진 규칙을 의미한다. TCP : 데이터 전송에 있어 정해진 규칙을 의미한다. IP : TCP 안에 있는 주소 4. IP 주소와 포트 1) IP주소 : 네트워크상에서 컴퓨터를 식별하는 번호 IP주소를 확인하기 위해서는 명령 프롬프트(cmd)를 사용한다. 예를 들어 지구 전체를 인.. 2022. 2. 8.
[파이썬] DAY15 openCV 차선 인식하기(동영상,이미지) 540 x 960 인 픽셀로 이루어진 3채널 데이터 import matplotlib.pyplot as plt import cv2 img = cv2.imread("Ex1.jpg") img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) print(img.shape) print(img.shape[0]) print(img.shape[1]) plt.imshow(img) plt.show() 1. 간단 적용 해보기 1) 단채널로 만들기 위해 아래 채널을 추가해준다. img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 흑백으로 처리가 된다. 2) 흐리게 만들어주기 위해 다음 코드를 추가한다. 정규분포 처럼 표준편차가 작은 그래프를 옆으로 퍼트리기 위해 블러 처리해준다... 2022. 2. 8.
[파이썬] DAY15 openCV 이미지 출력 수정하기 영상처리를 하는 이유 데이터를 수정하거나 분석하기 위해서 영상을 처리한다. 디지털 카메라를 통해 영상을 전자적으로 얻은 후에 컴퓨터로 영상을 처리하여 원하는 출력 영상을 얻는 기술로 주어진 목적을 달성하기 원래 영상을 새로운 영상으로 전환 컴퓨터 비전의 전처리 과정(인식 → 정보 수집, 수정)으로 물체를 인식하여 분석한다. 어떻게 인식할 것인가에 대해 다양한 메소드를 쓴다. 인공지능: 관련 있는 데이터들만 모아서 딥러닝으로 학습 시킨다. 영상은 2차원 함수 형태 f(x, y)로 정의되며 밝기의 값을 저장한다. 1. 이미지 출력하기 1. cv2로 읽고 plt로 출력 openCV (cv2) BGR 순서로 출력 matplotlib (plt) RGB 순서로 출력 openCV는 RGB가 아닌 BGR 순서로 출력되.. 2022. 2. 8.
[파이썬] DAY14 Numpy + Matplotlib 코드 분석 전체 코드 # matplotlib.pyplot을 plt로 import합니다 import matplotlib.pyplot as plt import numpy as np # 아나콘다에서 동작 가능 #%matplotlib inline #x축 범위 - 다항함수 / 사인코사인 / 탄젠트 x_upper = np.linspace(0, 5) x_lower = np.linspace(0, 2 * np.pi) x_tan = np.linspace(-np.pi / 2, np.pi / 2) #x축 좌표 - 다항함수 / 사인코사인 / 탄젠트 positions_upper = [i for i in range(5)] positions_lower = [0, np.pi / 2, np.pi, np.pi * 3 / 2, np.pi * 2] p.. 2022. 2. 7.
[파이썬] DAY14 Matplot 1. Matplot의 기능들 1. Matplot이란 데이터의 시각화를 위해 그래프나 이미지를 출력하기 위한 라이브러리이다. import matplotlib.pyplot as plt y = [1,5,43,7,2,1] plt.plot(y) plt.show() 을 실행하면 다음과 같은 그래프가 나타난다. 각각의 인덱스는 x축, 값은 y축으로 설정해서 그래프로 표현한다. 2. plot() 메소드의 입력 파라미터의 개수가 2개인 경우 첫번째 항목은 x축, 두번째항목은 y 축의 좌표값으로 나타낸다. import matplotlib.pyplot as plt y = [1,5,43,7,2,1] plt.plot(range(1,len(y)+1),y) plt.show() 를 실행해보면 아래와 같이 나온다. import mat.. 2022. 2. 7.
[파이썬] DAY14 Numpy 전치 행렬 1. 전치행렬 사용 전치 행렬: 행과 열을 교환하여 얻어지는 행렬 행렬의 값들을 주 대각선을 기준으로 위치를 바꾼 행렬을 의미한다. transpose() 전치행렬을 쓰는 이유 print(np.transpose(arr)) print(arr.transpose()) 은 너무 길어서 아래 처럼 축약해서 쓴다. print(arr.T) #실제로는 축약한 이 코드로 쓴다. 전치를 시켜도 원본은 바뀌지 않는다. 2. Numpy로 구현된 벡터 1. 벡터: 크기와 방향이 있음 1) 가로 벡터(1차원 배열)와 세로 벡터(2차원 배열) 2) 벡터의 연산: 덧셈과 뺄셈 각각의 인덱스끼리 연산해주기 위해 넘파이를 사용한다. 3) 내적 스칼라의 곱셈 넘파이 배열에서 스칼라 곱셈은 각각 인덱스 별로 곱해진다. 내적: 벡터의 각 요소.. 2022. 2. 7.
[파이썬] DAY14 파이참: open CV 환경 구축&새 프로젝트 생성 1. 환경 구축 모듈 설치 안하려고 했던 이유: ROS 작업은 기본적으로 리눅스에서 하게 된다. ROS작업은 터미널에서 작업하므로 꼬일 수 있고 외부 패키지 설치 등 복잡한 문제로 코랩에서 openCV를 하기로 한다. openCV는 활용 정도만 배우고 깊게는 배우지 못한다. 파이참이 가장 낫겠다. 인공지능 할 게 아니라서 아나콘다 설치는 안할 것임 파이썬 설치(3.10.2) bugfix에서 3.9버전으로 쓰는 것을 권장한다. 파이썬은 외부모듈, 라이브러리 가져오기 쉬운데 버전이 너무 높으면 호환이 안되는 경우가 생긴다. 특히 이미지 처리를 할 때 파이썬을 쓴다. 몇 줄로도 인공지능을 구현할 수 있을 만큼 파이썬을 애용한다. 인공지능 > .... > 딥러닝(가장 좁은 범위) openCV(인식) / SLAM.. 2022. 2. 7.
[파이썬] DAY13 Numpy(복습완료) C에서도 배열의 이름은 배열의 시작 주소이지만 C와 달리 파이썬 배열은 동적 할당이므로 배열의 사이즈를 미리 지정할 필요가 없고 자료형 또한 지정해줄 필요가 없다는 점에서 차이가 있다. 그러나 파이썬은 데이터가 많아질수록 C에 비해 처리 시간이 어마어마하게 길어진다. 무수히 많은 데이터를 일괄적으로 처리해야하는 기계 학습 분야에서는 파이썬의 기본 리스트로 데이터를 배열하는 데 충분하지 않다. 시간이 매우 오래 걸리기 때문이다. 따라서 많은 영역의 데이터를 빠르게 처리할 순 없을까 고민에서 나온 것이 'Numpy'이다. 즉, 데이터의 연산 속도를 중요시 하면서 데이터 과학자들은 기본 리스트 대신에 넘파이를 사용하게 되었다. 파이썬의 리스트는 객체(리스트의 칸막이 공간)에 각 데이터의 주소값을 저장하지만, .. 2022. 2. 4.