Tech & Development
Python으로 Slack App(Bot) 만들기 (4) - Slash Commands
Python으로 Slack App(Bot) 만들기 (4) - Slash Commands
2022.03.14이번에는 Slash Commands ( / ) 를 이용하여 요청과 응답을 하는 방법에 대해 알아보겠습니다. 상세한 내용은 Slack api 설명 페이지를 참고하시기 바랍니다. 1. slack api -> Slash Commands > [Create New Command] 2. Command, Request URL, Short Description, Usage Hint 등을 입력합니다. Request URL은 단순히 테스트를 위해서 http://localhost으로 입력해도 되지만 저는 ngrok으로 생성한 URL을 사용합니다. 그리고 기존에 Direct Message 처리부분과 구분하기 위해 URL+/slash/ 라고 입력했습니다. 3. [Save] 를 누르면 Slash Commands가 생성되었습니다...
Python으로 Slack App(Bot) 만들기 (3) - 챗봇
Python으로 Slack App(Bot) 만들기 (3) - 챗봇
2022.03.08이제 Slack App(Bot)에 질의하고 답을 받을 수 있도록 하겠습니다. 간단히 @태그로 Bot에 날짜와 요일을 요청하면 이벤트를 감지하여 답변을 하는 간단한 챗봇을 만들어 보도록 하겠습니다. 1. Event Subscriptions > subscribe to bot events 로 이동하여 [Add Bot User Event] 를 클릭합니다. 2. app_mention 권한을 추가합니다. 3. 이전 글에서 생성했던 flask_server.py 파일을 아래와 같이 수정합니다. 더보기 hello_there 함수는 Slack 과 통신이 잘 되는지 체크하여 event_handler를 호출합니다. event_handler에서는 even_type을 확인하여 질의에 대한 답을 Return 합니다. import ..
Python으로 Slack App(Bot) 만들기 (2) - 서버 구축(ngrok, Flask)
Python으로 Slack App(Bot) 만들기 (2) - 서버 구축(ngrok, Flask)
2022.03.08자동으로 응답이 가능한 Slack App(Bot)을 만들기 위해서는 Slack App(Bot)과 통신할 수 있는 서버가 필요합니다. 하지만 우리가 개발한 PC의 경우는 외부에서 접속가능한 상용 서버가 아니기때문에 도메인을 구입하고 서버를 호스팅 받아 연결해야 합니다. ngrok 과 Flask를 이용하여 외부에서도 접속 가능한 네트워크 환경을 구축하고 Slack App에서 호출 할 수 있도록 하겠습니다. 1. 먼저 ngrok 계정을 만들고 설치가 필요합니다. ngrok 설치 안내를 참고하시어 설치하시기 바랍니다. 2. Flask 설치가 필요합니다. Flask 설치 안내를 참고하시어 설치하시기 바랍니다. 3. 먼저 간단한 Flask Server를 python을 이용하여 만들도록 하겠습니다. 아래 코드를 작성..
Python으로 Slack App(Bot) 만들기 (1) - Slack App 생성
Python으로 Slack App(Bot) 만들기 (1) - Slack App 생성
2022.03.08Python과 Slack API를 이용하면 슬랙의 특정 채널에 글을 올리거나 응답을 할 수 있는 Bot을 만들 수 있습니다.그러기 위해서는 먼저, Slack API 페이지에서 App을 생성하고, App 관련 권한 설정 작업을 진행합니다. 궁극적인 목표는 내가 원하는 응답을 할 수 있는 Bot을 만드는 것이지만 이번 포스트에서는 Slack App을 생성하고 Python으로 특정 채널에 메세지를 보내는 예제까지 설명하도록 하겠습니다. Slack App 생성 1. Slack api 사이트로 이동하여 [Create an App] 버튼을 클릭합니다. 2. 활성화 된 팝업창에서 [From scratch]를 클릭합니다. 3. 앱 이름을 작성하고, 슬랙 작업 환경을 선택한 후에 [Create App]을 클릭합니다. 4..
Flask(플라스크) 설치/시작하기
Flask(플라스크) 설치/시작하기
2022.03.07Flask(플라스크)는 Django(장고)와 파이썬으로 웹 애플리케이션을 개발 할 때 가장 많이 사용하는 웹 프레임워크입니다. Flask는 많은 사람이 ‘마이크로 웹 프레임워크’라고 부릅니다. 여기서 ‘마이크로(micro)’는 ‘한 개의 파이썬 파일로 작성할 수 있다’ 또는 ‘기능이 부족하다’ 와 같은 의미가 아니라 프레임워크를 간결하게 유지(Simple)하고 확장(Extensible)할 수 있도록 만들었다는 뜻입니다. 다시말해 Flask는 최소한의 구성 요소와 요구 사항을 제공하고 필요에 따라 유연하게 확장 할 수 있도록 설계되어 있습니다. 예를 들어 Django는 프레임워크 자체에 폼(form)과 데이터베이스(database)를 처리하는 기능이 포함되어 있지만 Flask는 없습니다. 포함되어 있지 ..
ngrok으로 외부에서 접속가능한 로컬 네트워크 환경 구성하기
ngrok으로 외부에서 접속가능한 로컬 네트워크 환경 구성하기
2022.03.07ngrok 이란 ngrok 사이트에는 Secure tunnels to localhost이라고 설명되어 있습니다. 간단히 방화벽 넘어서 외부에서 로컬에 접속 가능하게 하는 터널 프로그램입니다. 만약 통신을 할 수 있는 프로그램을 개발했다면 서버의 역할이 필요한데 개발한 PC의 경우는 외부에서 접속가능한 상용 서버가 아니기때문에 도메인을 구입하고 서버를 호스팅 받아 연결해야 합니다. 말그대로 로컬서버죠. ngrok은 이러한 로컬서버를 간단히 외부에서 접속가능한 환경으로 만들 수 있게 도와줍니다. 물론 이런 프로그램이 ngrok뿐인 것은 아니지만, 위에서 설명한 상황에서 유용하게 쓸 수 있게 최적화되어 있어서 아주 쉽게 사용할 수 있다. ngrok은 무료 플랜과 유료 플랜이 있습니다. 무료 플랜인 경우 기본적..
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
2022.03.02Image Resize 고해상도의 이미지는 사람의 눈으로 보기에는 좋아 보이지만 컴퓨터가 연산하거나 이미지 파이프라인 처리에는 좋지 않을 수 있습니다. 이미지가 큰 경우 더 많은 데이터가 필요하기 때문에 알고리즘이 데이터를 처리하는 데 오래 걸리기 때문입니다. 이런 고해상도 이미지는 매우 디테일하지만, 컴퓨터 비전/이미지 처리 관점에서 볼 때 이러한 디테일한 사항보다는 이미지의 구조적 구성 요소가 더 중요하기 때문에 고해상도의 이미지를 다운샘플링하여 더 빠르고 정확하게 실행될 수 있도록 합니다. Import packages import cv2 import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시하고 ..
[ OpenCV ] Basic 5 - 이미지 상하, 좌우 대칭 (Flip)
[ OpenCV ] Basic 5 - 이미지 상하, 좌우 대칭 (Flip)
2022.03.02Image Flip x축 또는 y축을 가로질러 이미지를 뒤집는 방법을 소개하겠습니다. 다시말하자면 이미지를 수평 또는 수직을 기준으로 미러링 이미지로 변환하는 것입니다. Flip은 이미지 데이터를 부풀리기 위해서 사용되기도 합니다. Import packages import cv2 import numpy as np import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type..
[ OpenCV ] Basic 4 - 이미지 회전 (Rotate)
[ OpenCV ] Basic 4 - 이미지 회전 (Rotate)
2022.03.02Image Rotate 이미지를 특정 각도로 회전하는 방법에 대해 알아보겠습니다. 이미지를 회전할 때에는 회전할 지점을 지정해야 합니다. 대부분의 경우는 이미지의 중심을 기준으로 회전을 하지만 임의의 지점을 지정할 수도 있습니다. Import packages import cv2 import numpy as np import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type(..
[ OpenCV ] Basic 3 - 이미지 이동 (Shift)
[ OpenCV ] Basic 3 - 이미지 이동 (Shift)
2022.03.02Image Shift OpenCV를 이용하여 이미지를 이동하는 방법에 대해 설명드리겠습니다. imutils를 이용하여 간단하게 이미지를 이동 할 수 있지만 기본이 되는 affine transformation matrix (cv2.warpAffine)을 사용하는 방법을 포함하여 설명드리도록 하겠습니다. affine transformation matrix 이라고 하는 2 x 3 행렬을 정의해야 합니다. 이 행렬은 이미지가 왼쪽 또는 오른쪽으로 몇 픽셀을 이동될 것인지, 또는 이미지를 위 또는 아래로 몇 픽셀이 이동할 것인지 정의합니다. 음수 t{x} 값은 이미지를 왼쪽 으로 이동 양수 t{x} 값은 이미지를 오른쪽 으로 이동 음수 t{y} 값은 이미지 를 위로 이동 양수 t{y} 값은 이미지 를 아래로 이동..
[Anaconda] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. 해결 방법
[Anaconda] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. 해결 방법
2022.02.17Anaconda로 만든 가상환경 활성화 시 아래와 같은 오류가 발생하는 경우가 있습니다. CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run 해결방법은 아래 명령어 수행 후 실행하시면 됩니다. source ~/ [Anaconda 설치경로] /etc/profile.d/conda.sh source ~/opt/anaconda3/etc/profile.d/conda.sh 또는 아래와 같이 사용하셔도 됩니다. source activate vision_env source deactivate
Object Detection Architecture - 1 or 2 stage detector
Object Detection Architecture - 1 or 2 stage detector
2022.02.16Object Detection 방식 중 Sliding Window를 이용하는 방식은 이미지에서 모든 영역을 다양한 크기의 window (differenct scale & ratio)로 탐색하기때문에 매우 비효율적입니다. 이런 비효율성을 개선하기 위해 물체가 있을만한 영역을 빠르게 찾아내는 알고리즘이 Regional Proposal입니다. 즉, regional proposal은 object의 위치를 찾는 localization문제입니다. 대표적으로 Selective search, Edge boxes들이 있습니다. 2-stage detector 먼저 2-stage detector에 대해서 살펴보면, regional proposal과 classification이 순차적으로 이루어지며, 이 뜻은 localiza..