[자율주행] djitellopy & opencv Object Detection - (1)
·
ML/OpenCV
djitellopy와 opencv를 통한 비디오 스트림 예제 drone.streamon() while True: img = drone.get_frame_read().frame() # 이미지 절대적 크기 지정 img = cv2.resize(img,(360,240)) # imshow("name", 변수) cv2.imshow("Image",img) # delay, 단위: millisecond cv2.waitKey(1) resize python: cv.resize( src, dsize[, dst[, fx[, fy[, interpolation]]]] ) -> dst - src: input image, 원본 이미지 - dts: output image, src와 동일한 유형 - dsize: output image s..
[공모전] 2021 슬기로운 코딩생활 최우수상 후기
·
회고 & 후기/회고 & 후기
개요 나는 당시 경영학부 학생이었고 Python으로 통계학을 배우며 코딩에 관심을 가지게 되었는데, 슬기로운 코딩생활에서 약 2주 간 비대면 교육 기간을 주는 것을 활용하기 위해서 참여하였다. 또한 내가 배운 프로그래밍으로 아이템을 제작하는 것이 흥미로웠기에 참여를 결심했다.  기획부터 MVP모델 제작까지 모두 비대면 환경에서 혼자 해결하느라 그리 쉬운 것은 아니었다. 또 지금 생각해보면 당시에는 프로그래밍에 입문할 시기여서 구글링에 대한 개념 자체가 없었다. 그래서 진짜 기초적인 것들도 운영진 분들께 많이 여쭈어보면서 대회에 참여했는데, 다행스럽게도 운영진 측에서 많은 도움을 받을 수 있어 코딩을 처음 접하는 사람들도 노력만 한다면 충분히 수상이 가능한 대회였다. 사실 2주 간 교육 과정에서 귀찮아서,..
[백준/11004] K번째 수 | Python 정렬 함수의 알고리즘
·
PS/BOJ&Programmers
K번째 수 Baekjoon Online Judge Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다. www.acmicpc.net 알고리즘 N(1
[자율주행] OpenCV와 영상처리 | 필터링 | 영상 잡음 전처리
·
ML/OpenCV
Python과 Tello Drone 자율주행 Part1. OpenCV와 영상처리 영상처리(Image Processing)란? 입출력이 영상인 모든 형태의 정보 처리 OpenCV란? 영상처리와 컴퓨터 비전을 위한 오픈소스 라이브러리로 C, C++, Python 등에서 사용 가능하다. 💡 영상처리의 기본 과정 1. 영상 입력받는다. 2. 영상 데이터를 전처리한다. 3. 전처리된 영상 데이터에서 특징을 추출한다. 4. 추출된 특징으로 정보를 해석하거나 인식한다. 우리가 앞선 메뉴얼에서 실행해보았던 video_effect.py를 실행하면 카메라로 추출되는 영상과 Canny Edge 영상이 잘 나올 것이다. 해당 예제 파일에서 tellopy의 get_video_stream, av의 open, cv2의 imshow..
[자율주행] Tello SDK 환경 세팅 | 간단한 이착륙 코드 | OpenCV 비디오 스트림
·
ML/OpenCV
환경 세팅 TelloPy tellopy는 pip 설치가 돼 있다면 터미널에서 아래 명령을 쳐서 쉽게 받을 수 있다. pip3 install tellopy 설치 뒤에는 import tellopy를 통해 패키지를 사용할 수 있다. VSC에서 다음과 같이 tello 프로젝트를 진행할 폴더를 생성하자. 필자는 TelloProjects라고 이름을 지어서 폴더를 생성해주었다. 여기서 위 과정을 따라 tellopy 라이브러리를 설치하고 import tellopy를 했음에도 불구하고 라이브러리를 사용할 수 없는 경우에는 tellopy를 직접 빌드하여 설치하는 해결 방법이 있다. git clone cd TelloPy python setup.py bdist_wheel pip install dist/tellopy-*.dev..
[CS] 비트마스킹 | 비트 연산자 | 비트마스킹과 집합
·
CS/OS
비트마스킹(Bitmasking a.k.a. lightweight) 컴퓨터는 숫자나 데이터를 이진수로 표현한다. 이진 표현을 수정하고 활용하는 과정이 비트마스킹이다. 비트마스킹은 비트 연산을 사용하여 특정 비트의 값을 설정하거나 검사하는 방법을 제공한다. 비트마스킹을 통해 메모리를 절약하고 연산 속도를 향상시킬 수 있다. 비트 연산자 AND(a&b) 둘다 1이면 1, 아니면 0 OR(a|b) 둘다 0이면 0, 아니면 1 XOR(a^b) 같으면 0, 다르면 1 NOT(~a) 0 → 1, 1 →0 LS(a > 2) a를 2비트 만큼 오른쪽 시프트 비트마스크와 집합 비트마스크를 활용하여 집합 연산을 쉽고 빠르게 사용할 수 있다. 이를 통해 문제 해결을 쉽고 빠르게 할 수 있다! 원소의 개수가 N인 집합이 있다고..
[Backend] 객체 지향 특징 | 다형성 | 좋은 객체 지향 설계 5 가지 원칙(SOLID) | EJB
·
Dev/Spring & JPA
The hell of EJB…. EJB(Enterprise Java Beans): 자바당 정파 기술 이론은 좋은데 실무적으로 사용하기에 복잡하고 힘들면서, 느리다. Spring(스프링) EJB 컨테이너 대체 Hibernate EJB 엔티티빈 기술을 대체 JPA 새로운 표준 정의 객체 지향 특징 추상화, 캡슐화, 상속, 다형성 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 “객체”들의 모임으로 파악하고자 하는 것이다. 각각의 개체는 메시지를 주고 받고, 데이터를 처리할 수 있다. ⇒ 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 sw 개발에 많이 사용된다. 유연하고, 변경이 용이하다? 레고 블럭 조립하듯이 부품을 갈아 끼우듯이 컴포넌트..
[python/AI] Python 외부 라이브러리 설치 및 관리 총정리
·
ML
ML 관련 프로젝트를 하다보면 외부 라이브러리 관리가 까다로움을 느낀다. Python을 통해서 다양한 작업을 수행할 수는 있지만, 다양한 연산을 지원하는 라이브러리 관리도 필수적이다. pip 파이썬 라이브러리를 관리해주는 프로그램이다. 파이썬의 다양한 라이브러리를 사용하기 위해서는 pip가 필요하다. pip는 파이썬으로 작성된 라이브러리를 관리해주는 시스템으로, 파이썬 관련 명령어에 다양하게 활용된다. MacOS 유저는 brew, 우분투/리눅스 유저들은 apt와 비슷하다고 생각하면 된다. pip는 Python 2.7.9 이후 버전, Python 3.4 이후 버전에는 내장되어있으므로 따로 설치할 필요가 없다. pip vs pip3 pip: Python2 버전 패키지 매니저 pip3: Python3 버전 패..
[백준/1032] 명령 프롬프트 | 문자열 비교
·
PS/BOJ&Programmers
명령 프롬프트 알고리즘 문자열 비교 알고리즘이다. 이런 문제를 풀 때는 모든 보기를 다 비교해야 할지, 일부로도 해결이 가능한지 판단한다. 어차피 N의 범위가 적으니까 할 수 있는 건 다 해서 풀어낸다. 전체 코드 내가 작성한 코드 import sys; input=sys.stdin.readline n=int(input()) file=[input() for _ in range(n)] tmp=[] for i in range(n): for j in range(i+1, n): if file[i] != file[j]: a = file[i] b = file[j] for k in range(len(a)): for l in range(len(b)): if a[k] != b[k] : tmp.append(k) break ..
[백준/1009] 분산 처리 | 반복되는 숫자 어떻게 효율적으로 처리할까
·
PS/BOJ&Programmers
 분산 처리 알고리즘 승수의 마지막 자리 반복 0 0 1 1 2 2 4 8 6 3 3 9 7 1 4 4 6 5 5 6 6 7 7 9 3 1 8 8 4 2 6 9 9 1 수의 끝자리만 가져오는 두 가지 방법 문자열 활용 a = str(a) a = int(a[-1]) 나머지 활용(%10, %100, %1000, ....) a %= 10 # 끝 한 자리만 a %= 100 # 끝에서부터 2개 전체 코드 import sys; input=sys.stdin.readline t=int(input()) for _ in range(t): a,b = map(int,input().split()) a = str(a) a = int(a[-1]) if a == 1 or a == 5 or a == 6: print(a) # 4 번씩..
[백준/10158] 개미 | 점화식 그게 뭔데 그거 어떻게 하는 건데
·
PS/BOJ&Programmers
10158 개미 알고리즘 t의 범위가 1 ≤ t ≤ 200,000,000이므로 완전탐색을하면 타임아웃이다. 그렇다면 어떤 점화식을 세워서 문제를 풀어야 한다는 건데 1. x와 y의 독립성 이 문제는 1초의 시간이 지날 때 x = (x+1) or (x-1)이 되고 y = (y+1) or (y-1)이 된다. 따라서 각각의 값이 독립적으로 움직인다는 결론에 도달할 수 있다. 2. 이동 횟수와 이동 거리의 관계 x좌표와 y좌표는 각각 t만큼 이동을 하게 되고, 이 이동 주기가 2*w, 2*h이다. 아래와 같은 그래프를 보면 이해가 쉽다. 따라서 이동 자체에 대한 점화식은 다음과 같다. (p+t) % 2*w (q+t) % 2*h 이제 이동 좌표에 관한 점화식을 얻었으니, 거리를 구하면 된다. 거리는 수학적으로 뺄..
[개발 일지] 프로젝트 성능 최적화 | 원하는 폴더에 python package 함께 설치하고 AWS Lambda에 zip 파일 올리기 1편
·
회고 & 후기/개발 일지
냉시피 프로젝트의 모든 API 개발과 배포가 완료되었다. 이후 개발 마무리 회의에서 내가 구현한 Recipe API의 성능 최적화 작업을 시작하기로 했다. 성능 최적화를 고민한 이유 성능 최적화 전 Recipe API 로직은 다음과 같다. GET 요청이 들어오면 Crawling 함수를 실행하여 "만개의 레시피" 사이트 크롤링 database Recipe Entity의 recipe_name column을 확인하여 중복되지 않은 경우 크롤링 정보 db에 저장 사용자가 저장한 재료(Ingredient Entity)와 저장된 Recipe 목록(Recipe Entity)을 비교하여, 사용자가 저장한 재료를 기반으로 레시피 목록을 출력 위와 같이 postman, nengcipe 서버 모두에서 api가 잘 작동하는 ..
[Docker] MariaDB 도커 이미지와 PyMySQL로 쿼리 작성하기
·
DevOps/Docker
개요지금까지 Docker image mariadb, DBeaver mariadb를 사용하여 database를 다루는 환경을 세팅하고, 쿼리문을 작성해보았다. RDBMS 마지막 시간에서는 python으로 mysql을 다루는데, 이러한 방법이 있는줄 몰랐고 생소한 내용이어서 기록해두기로 하였다.   환경 세팅우선 Docker 컨테이너 접속하여 가상환경 전원을 켜준다.개발 환경은 docker container와 visual studio code를 활용하였다. 사용할 도커 컨테이너를 터미널에서 작동시키고, vsc를 통해 접속하면 된다.위 화면은 아직 가상환경 접속 전 상태이므로 오른쪽에 로컬에서 사용했던 코드가 보인다가상환경에 접속하기 위해 원하는 컨테이너에 오른쪽 마우스를 클릭한 뒤, Attach Visual..
[알고리즘] 다익스트라 알고리즘
·
PS/Algorithm
다익스트라다익스트라는 음의 가중치가 없는 그래프의 한 정점에서 모든 정점까지의 최단거리를 구하는 알고리즘이다.bfs, dfs처럼 원리를 통해 특정 경로, 비용 등을 계산하는 알고리즘이다. 최단경로(출발, 도착, 비용)**이때 cost는 양의 가중치, 유향 그래프 특징1. 시작점이 주어진다.2. 시작점을 출발지로 [INF] * (n+1)로 초기화된 node의 가중치 정보를 갱신하며 그래프 탐색을 한다.3. 이때 노드들을 방문하면서 python heapq를 사용하여 노드 번호와 가중치를 체크하면 최단거리를 찾을 수 있다.4. graph는 i번째 노드에서 j번째 가는 가중치(w)를 저장해야 하므로 이차원 리스트로 구현한다.  구현 방법구현은 python heapq를 활용한다. python의 우선순위 큐.원소들..
[백준/1238] 파티 | 다익스트라 | 왕복 거리 계산 |
·
카테고리 없음
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 지금까지 풀었던 다익스트라 문제들에서 약간 응용된 부분이 있는 문제다. 다익스트라는 bfs, dfs처럼 원리를 통해 특정 경로, 비용 등을 계산하는 알고리즘이다. 따라서 이 원리에 대해서 잘 이해하고 어떻게 쓰는지 외우며 다양한 문제를 풀어보면 크게 어려울 것 없다. 일단 dfs, bfs를 공부할 때와 마찬가지로 어떤 원리를 가지고 있고, 이 원리를 코드로 어떻게 구..
sebinChu
'분류 전체보기' 카테고리의 글 목록 (7 Page)