프로그래밍 언어 및 IT 정보 35

[Algorithm] 슬라이딩 윈도우(Sliding Window) 알고리즘 with python

'슬라이딩 윈도우' 란 윈도우(특정 범위)가 있을때 윈도우 내부 요소의 값을 이용하여 문제를 풀이하는 알고리즘입니다. 아래 그림을 참조하면 조금 더 쉽게 이해하실 것입니다. 예를들어 [1,3,2,6,-1,4,1,8,2] 라는 배열이 있는데, 연속적인 5개의 숫자의 합이 최대의 값을 구한다고 가정을 해봅시다. [1,3,2,6,-1],4,1,8,2 합 : 11 1,[3,2,6,-1,4],1,8,2 합 : 14 1,3,[2,6,-1,4,1],8,2 합 : 12 1,3,2,[6,-1,4,1,8],2 합 : 18 1,3,2,6,[-1,4,1,8,2] 합 : 14 이런 식으로 구해볼 수 있겠죠 ? 지금은 배열이 짧아서 하나씩 구해볼 수 있지만 배열이 30개, 연속적인 숫자 2개의 합을 구하라하면 일일히 계산해서 할..

[opencv_python] 4.2 기하학적 변환 (자르기(ROI), 어핀변환,원근변환 )

저번 포스팅에 이어 opencv로 기하학적 변환 두 번째 공부를 진행해보겠습니다. 이번 강의에는 크기조절, 자르기, 기하학적의 기본 바탕이 되는 아핀 변환, 원근 변환을 공부해보도록 하겠습니다. 저는 Visual studio code와opencv 4.5.5 버전을 이용하였습니다. 자르기(Slice) 자르기(Slice)는 영상이나 이미지에서 특정 영역을 잘라내는 연산이라고 보시면 됩니다. 특정 영역을 잘라내는 것을 ROI (Region Of Interest) 라고 하며, 이미지상 관심 있는 영역이라고 보시면 됩니다. 관심 영역만 잘라 알고리즘을 적용한다면, 불필요한 연산이 줄어들게 되겠죠? import cv2 img = cv2.imread('./img/torr.jpg') cp = img[150:250, 1..

[opencv_python] 4.1 기하학적 변환 (대칭, 회전, 확대, 축소 )

저번 포스팅에 이어 opencv로 기하학적 변환을 진행해보도록 하겠습니다. 기하학적 변환(geo-metric transform)은 영상의 좌표에 기하학적인 연산을 가해서 변환된 새로운 좌표를 얻는 것을 말합니다. 쉽게 말해 이미지를 구성하는 픽셀 좌표값이 위치를 재배치하는 과정이라고 보시면 됩니다 :) 저는 Visual studio code와opencv 4.5.5 버전을 이용하였습니다. 대칭(Flip, Symmetry) 대칭은 상하대칭 or 좌우 대칭 2가지 방법이 있는데, 변환할 행렬(이미지)에 대해 2x2 행렬을 왼쪽곱샘을 진행해하면 됩니다. 즉 '->' 형태의 물체에 Y축 대칭을 적용한다면 '

[opencv_python] 3. 이벤트 처리 (키보드, 마우스, 트랙바)

저번 포스팅에 이어 opencv로 도형을 그리는 예제를 공부해보도록 하겠습니다. 저는 Visual studio code와opencv 4.5.5 버전을 이용하였습니다. opencv의 영상 출력을 진행하고 출력되는 창에서 발생하는 키보드 입력, 마우스 입력 이벤트 등을 사용자에게 전달하는 인터페이스를 제공하며, 이를 이용해 사용자 입력을 실시간으로 처리할 수 있는 프로그램을 만들 수 있습니다. 키보드 이벤트 앞의 블로그에서 사용본적 있는 cv2.waitKey() 함수는 키보드의 입력을 알아낼 수 있습니다. cv2.waitKey(delay) Parameters delay: 밀리초 단위의 지연입니다. 0은 "영원히"를 의미하는 특별한 값입니다. 이 함수는 delay인자에 밀리초 단위로 숫자를 전달하면 해당 시간..

[opencv_python] 2. 도형 및 TEXT 그리기

저번 포스팅에 이어 opencv로 도형을 그리는 예제를 공부해보도록 하겠습니다. 저는 Visual studio code와opencv 4.5.5 버전을 이용하였습니다. opencv의 다양한 api 함수를 통하여 여러 도형을 그릴 수 있습니다. 도형 그리는 법은 이미지나 동영상에서 자기가 원하는 영역을 찾은 후 사용자가 편하게 인식하기 위해 목적으로도 사용됩니다 :) 빈 이미지 제작 먼저 어떠한 배경에 도형이나 그림을 그리기 전에 500x500 픽셀 크기의 하얀 이미지를 제작해보려 합니다. import cv2 import numpy as np img = np.full((500,500,3), 255, dtype=np.uint8) cv2.imwrite('blank_500.jpg', img) 위 코드를 보시면 N..

[opencv_python] 1. 이미지 및 동영상(카메라) 읽어오기

이번 포스팅부터는 영상 처리 라이브러리 중 제일 유명한 opencv를 공부하며 알아보도록 하겠습니다. 저는 Visual studio code 와 opencv 4.5.5 버전을 이용하였습니다. 이미지 읽기 가장 기본적인 이미지를 읽는 예제입니다. import cv2 import sys path = 'torr.jpg'# 표시할 이미지 경로 ---1 img = cv2.imread(path, cv2.IMREAD_COLOR)# 이미지를 읽어서 img 변수에 할당 ---2 if img is None:# 이미지가 잘불러왔는지 확인 sys.exit("Could not read the image.") cv2.imshow("Display window", img)# 읽은 이미지를 화면에 표시 --- 3 cv2.waitKey..

[DB] PostgreSQL이란 ? 및 설치 방법

이번에는 제가 자주 애용하는 DBMS 중 하나인 PostgreSql을 다뤄보려 합니다. :) 혹시 DBMS에 더 자세히 알고 싶으시면 이전 글을 확인해주세요 ! 2021.10.12 - [DataBase] - [DataBase] DB, DBMS 란? (feat.PostgreSQL) [DataBase] DB, DBMS 란 ? (feat.PostgreSQL) 오늘은 DataBase(DB)에 대해서 공부해볼까 합니다 :) DataBase가 무엇인지부터 알아봐야겠죠? 데이터베이스(DB) DataBase란 ? 데이터베이스(DB)란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 learning-e.tistory.com 1. PostgreSQL이란? PostgreSQL은 매우 강력학 오픈소스 ORDBMS(객체 ..

[DataBase] DB, DBMS 란 ? (feat.PostgreSQL)

오늘은 DataBase(DB)에 대해서 공부해볼까 합니다 :) DataBase가 무엇인지부터 알아봐야겠죠? 데이터베이스(DB) DataBase란 ? 데이터베이스(DB)란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 '데이터들의 모임' 한마디로 데이터를 모아둔 창고라고 생각하시면 됩니다. 데이터베이스(DB)의 정의 4가지 : ISOS -통합 데이터(Integrated Data): 자료의 중복을 배제/최소화한 데이터 집합 -저장 데이터(Stored Data): 컴퓨터가 접근 가능한 저장매체에 저장된 데이터 집합 -운영 데이터(Operational Data): 조직의 업무 수행에 반드시 필요한 데이터 집합 -공유 데이터(Shared Data): 여러 응용 시스템이 동시/공동으로 사용 가능한 데이터 집..

[flutter] 에러 : Expected a key while parsing a block mapping.

안녕하세요 :) 오늘은 flutter 에서 발견한 문제를 공유하고자 합니다. Error detected in pubspec.yaml: Error on line 61, column 4: Expected a key while parsing a block mapping. 저같은 경우는 Image를 yaml 파일에 사용한다고 asset 추가할때 발생하는 문제였습니다. 저는 image/ 폴더 안의 이미지 전체를 넣으려고 Path를 잡으니, 저 에러가 발생했습니다. 위 두개의 코드에서 자이를 아시겠나요 ? 센스 있는 분들은 아실지도...! 저는 몰랐습니다.... .yaml 파일은 들여쓰기의 의미가 굉장히 민감합니다. 그래서 assets의 들여쓰기 정도가 달랐기 때문에 발생한 문제입니다. 항상 .yaml파일은 만질때..

[Git/Github] GitBash를 이용해 Github 에 파일 업로드

안녕하세요 :) 오늘은 Github의 계정을 만들고 그 계정에 내 로컬에서 파일을 Git Bash을 이용해 올리는 법을 알아보도록 하겠습니다. Github desktop을 이용해서 GUI상 더 쉽게 올릴 수 있지만 전 커맨드 창 명령어에 익숙해져 보기 위해 Git bash를 사용해 보겠습니다! GitHub: Where the world builds software GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and ..