File size: 1,253 Bytes
5be9215 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import streamlit as st
import cv2
import numpy as np
import base64
from io import BytesIO
from PIL import Image
def process_image(image):
gray = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2GRAY)
_, thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY)
return thresh
def detect_obstacle(thresh_img):
ground_part = thresh_img[50:, :]
air_part = thresh_img[:50, :]
ground_nonzero = np.count_nonzero(ground_part)
air_nonzero = np.count_nonzero(air_part)
if ground_nonzero > 0:
return "ground"
elif air_nonzero > 0:
return "air"
return None
st.title('障碍物检测应用')
uploaded_file = st.file_uploader("选择一张图片", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption='上传的图片', use_column_width=True)
if st.button('检测障碍物'):
processed_img = process_image(image)
obstacle = detect_obstacle(processed_img)
if obstacle:
st.success(f'检测到的障碍物类型: {obstacle}')
else:
st.info('未检测到障碍物')
st.image(processed_img, caption='处理后的图片', use_column_width=True) |