Streamlit(十) widgets-file_uploader

st.file_uploader

源码路径:${python}\Lib\site-packages\streamlit\elements\file_uploader.py

st.file_uploader(label, type=None, accept_multiple_files=False, key=None,\
         help=None, on_change=None)

#如果 accept_multiple_files 为 False,则返回 None 或 UploadedFile 对象。
#如果 accept_multiple_files 为 True,则返回一个包含已上传文件的列表作为 UploadedFile 对象。
#如果没有上传文件,则返回一个空列表

label:一个简短的标签,向用户解释此文件上传器的用途。
type:允许的扩展名数组。 ['png', 'jpg'] 默认为None,表示允许所有扩展。
accept_multiple_files:如果为 True,则允许用户同时上传多个文件,在这种情况下,返回值将是文件列表。默认值:False。
key:一个可选的字符串或整数,用作小部件的唯一键。如果省略,将根据小部件的内容为小部件生成一个键。同一类型的多个小部件可能不会共享相同的密钥。
help:当按钮悬停在上面时显示的可选工具提示。
on_change:当此复选框的值更改时调用的可选回调。

上传二进制文件

import streamlit as st
#先同download_button ,自行生成一个二进制文件
binary_contents = b'a bin file , hehe  da \n I\'m a new line'
# Defaults to 'application/octet-stream'
st.download_button('下载为bin文件',  binary_contents )


#再上传这个二进制文件
uploaded_file = st.file_uploader("请选择一个二进制文件:")
if uploaded_file is not None:
    # To read file as bytes:
    bytes_data = uploaded_file.getvalue()
    st.write(bytes_data)

 

上传文本文件

uploaded_file = st.file_uploader("请选择一个文本文件:")
if uploaded_file is not None:
    # To read file as string:
    string_data = uploaded_file.read().decode("utf-8")
    st.write(string_data)

 

 上传文件用pandas读取csv

#比较简单的文本,可以直接使用uplaoded_file
uploaded_file2 = st.file_uploader("请选择文件(可多个):", \
    accept_multiple_files = False, type=["csv"])
if uploaded_file2 is not None:
    df = pd.read_csv(uploaded_file2)
    st.dataframe(df)

上传文件用pandas读取标准excel

#excel比较特殊,读取的时候先要read()
#其他语法和正常的pandas是一样的。
uploaded_file = st.file_uploader("请选择文件(可多个):", \
        accept_multiple_files = False, type=["xlsx","xls"])
if uploaded_file is not None:
    df = pd.read_excel(uploaded_file.read())
    st.dataframe(df)

### 钢材表面缺陷检测系统的用户界面设计与实现 钢材表面缺陷检测系统不仅依赖于高性能的深度学习模型,还需要友好的用户界面来提升用户体验并简化操作流程。以下是几种常见的用户界面设计方案及其技术实现方式: #### PySide6 图形界面开发 通过 PySide6 开发的图形界面可以为用户提供本地化的桌面应用程序体验。这种方案适用于需要离线运行或嵌入到现有工业控制系统中的场景。PySide6 提供了丰富的 UI 组件库,使得开发者能够创建高度定制化且响应迅速的应用程序。 - **特点**: 支持多窗口管理、复杂的布局结构以及多种事件处理机制[^1]。 - **适用范围**: 工业现场的质量监控设备集成;对于网络连接受限环境下的独立部署尤为适合。 ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Steel Defect Detection System") label = QLabel("Welcome to Steel Surface Inspection", self) button = QPushButton("Start Detection", self) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` --- #### Streamlit Web 应用界面 Streamlit 是一种轻量级框架,用于构建交互性强的数据科学项目展示平台。它特别适合作为云端服务的一部分,允许远程用户通过浏览器访问钢材表面缺陷检测工具的功能。 - **优势**: 易于上手的学习曲线短;内置组件丰富无需额外安装第三方插件即可完成大部分需求[^3]。 - **局限性**: 对大规模并发请求的支持可能不如专门针对企业级应用场景优化过的前端框架那样强大。 下面是一个简单的例子展示了如何使用 streamlit 构建基本页面架构: ```python import streamlit as st st.title('Steel Surface Defect Detector') uploaded_file = st.file_uploader("Choose an image...", type=["jpg","png"]) if uploaded_file is not None: bytes_data = uploaded_file.getvalue() st.image(bytes_data,width=200,caption='Uploaded Image.') model_option = st.selectbox( 'Which model do you want to use?', ('yolov5', 'yolov7','yolov8')) button_pressed = st.button('Run Prediction') if button_pressed: st.write(f'Using {model_option} Model...') ``` --- #### 数据标注与分类说明文档 为了更好地理解所使用的数据集内容,在实际编码之前先了解目标对象的具体定义是非常重要的。这里列举了一些典型的钢材表面损伤类型作为参考依据[^4]: | 类别名称 | 描述 | |----------|------| | 裂纹(crack)| 表面存在明显缝隙或者断裂痕迹 | | 污点(spot) | 局部区域颜色异常呈现斑点状分布 | | 凹陷(indentation)| 物体表面低于周围平面形成坑洞现象 | | 其他(others)| 不属于上述三类但仍然影响产品质量的情况 | 以上信息可以帮助工程师们更精确地标记样本从而提高最终识别效果. ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heianduck

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值