Streamlit 및 Streamlit-webrtc를 사용하여 쉬운 컴퓨터 비전 웹 앱을 구축해 봅시다
4901 단어 computervisionaistreamlitpython
유선형
몇 줄의 코드로 파이썬으로 웹 앱을 만들 수 있는 놀라운 오픈 소스 프레임워크입니다. 이제 웹 앱을 디자인하기 위해 HTML 페이지와 Css 시트를 만드는 대신 Streamlit(프레임워크) 도구가 있습니다. 이 모든 작업을 쉽게 할 수 있고 하나의 코드 스크립트에서 모든 디자인 및 앱 기능을 컴파일할 수 있습니다. 따라서 이 도구의 기능을 자세히 알아보도록 하겠습니다. 이 놀라운 프레임워크에 대한 자세한 내용은 다음 링크를 참조하십시오. - Streamlit documentation
전제 조건
계속 진행하기 전에 다음 패키지를 설치해야 합니다.
streamlit
% pip install streamlit
opencv-python
% pip install opencv-python
streamlit-webrtc
% pip install streamlit-webrtc
av
% pip install av
앱을 만들 준비가 되었습니다 🥳
먼저 "Hello world"를 인쇄하여 앱을 실행합니다.
따라야 할 단계:
% cd /usr/include directory
app.py
을 만듭니다. % python -m venv venv
% . /venv/bin/activate
app.py
파일로 이동하여 다음 코드를 작성하고 파일을 저장합니다.import streamlit as st
st.write("Hello, world")
% streamlit run app.py
이렇게 하면 streamlit 서버가 부팅되고 앱이 브라우저에서 열립니다.
산출
Streamlit_Webrtc
streamlit_webrtc
패키지는 실시간 비디오/오디오 스트리밍용입니다.app.py
파일을 업데이트하여 제목 및 비디오 스트리밍 구성 요소streamlit_webrtc
를 추가합니다. 앱의 기능을 보여주기 위한 예일 뿐이므로 앱에서 "Hello World"를 제거할 것입니다.webrtc_streamer()
에서 가져온 streamlit_webrtc
클래스를 호출합니다.import streamlit as st
from streamlit_webrtc import webrtc_streamer
st.title("Computer Vision Streamlit application")
webrtc_streamer(key="demo")
산출
"시작"버튼을 클릭하면 비디오 및 오디오 캡처 권한을 요청합니다. 권한을 부여하면 라이브 비디오 스트리밍이 표시됩니다.
OpenCV를 사용하여 앱에 비디오 처리 구성 요소를 추가해 보겠습니다.
캡쳐한 영상에
app.py
를 이용한 필터를 적용할 수 있도록 OpenCV
파일을 업데이트 하겠습니다.OpenCV
라이브러리의 이미지 처리 필터를 사용합니다.원하는 대로 다른 필터를 자유롭게 사용할 수 있습니다.
VideoProcessor
을 만들고 그 안에 이름recv()
이라는 함수를 정의합니다. 이것은 프레임에서 입력을 받고 프레임에 출력을 반환하는 콜백 함수입니다. webrtc_streamer()
는 .recv()
함수가 있는 클래스 개체를 video_processor_factory
인수로 사용할 수 있습니다. .recv()
의 인수는 캡처된 웹캠 입력 비디오의 이미지 프레임입니다. frame.to_ndarray()
명령을 사용하여 NumPy 배열로 변환합니다. -이 명령
.recv()
으로 화면에 표시되는 av.VideoFrame.from_ndarray(image, format="bgr24")
에서 반환됩니다.app.py
파일을 업데이트합니다.import av
import cv2
import streamlit as st
from streamlit_webrtc import webrtc_streamer
st.title("Computer Vision Streamlit application")
class VideoProcessor:
def recv(self, frame):
image = frame.to_ndarray(format="bgr24")
image = cv2.cvtColor(cv2.Canny(image, 100, 200), cv2.COLOR_GRAY2BGR)
return av.VideoFrame.from_ndarray(image, format="bgr24")
webrtc_streamer(key="demo", video_processor_factory=VideoProcessor)
산출
와우!🥳 우리는 이 앱으로 준비되었습니다
전개
Streamlit Cloud에 앱을 배포하려면 여기Documentation를 확인하십시오.
Reference
이 문제에 관하여(Streamlit 및 Streamlit-webrtc를 사용하여 쉬운 컴퓨터 비전 웹 앱을 구축해 봅시다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kanikshas4/lets-build-an-easy-computer-vision-web-app-with-streamlit-streamlit-webrtc-4fp0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)