Streamlit 使用:第一个导航栏:实现边界检测

运行环境:image(虚拟环境) opencv-python streamlit numpy

image 虚拟环境配置:

conda create -n image python=3.9

conda activate image //激活虚拟环境

pip install streamlit //安装streamlit

pip install opencv-python //安装opencv-python

pip install numpy //安装numpy

创建index.py

import streamlit as st

st.title("首页")


#字典
pages ={
#一级菜单
    'Hough变换':
    [
         st.Page('Page/line_page.py',title='直线检测'),
          st.Page('Page/circle_page.py',title='圆形检测')

    ],

        '边界检测':
    [
        st.Page('Page/edgedet_page.py',title='边界检测'),
        #st.Page('circle_page.py',title='圆形检测')

    ],
    'test':[st.Page('Page/test.py',title='test1')]
  } 

#创建导航栏
pg = st.navigation(pages)
pg.run()

创建edgedet_page.py

import streamlit as st
import cv2
import numpy as np
st.title("边界检测")

files =  st.file_uploader('图形上传',type=["jpg","png","jpeg"])

#将页面拆分为两个布局
col1,col2 = st.columns(2)
if files is not None:
    #通过getvalue获得的数据是二值文件
    values  = files.getvalue()
    #st.write(values)
    #转换为opencv可以识别的
    cv2_img = cv2.imdecode(np.frombuffer(values,np.uint8),cv2.IMREAD_COLOR)

    #将左边布局显示原始图像
    with col1:
        st.image(cv2_img,'原始图像')


    #业务逻辑
    #边界检测
    img_gary = cv2.cvtColor(cv2_img,cv2.COLOR_BGR2GRAY)
    edge = cv2.Canny(img_gary,100,200)


    with col2:
        st.image(edge,'检测结果')
    #image自动处理了二值文件
    st.image(cv2_img)

在Anaconda prompt里面进入index.py 所在目录,注意若在D盘,则先需要D:切换盘符

 

(image) C:\Users\Administrator\Desktop\傅里叶变换>cd 5.16课程code

(image) C:\Users\Administrator\Desktop\傅里叶变换\5.16课程code>streamlit run index.py

效果图:

实现边缘检测代码

import streamlit as st
import cv2
import numpy as np
st.title("边界检测")

files =  st.file_uploader('图形上传',type=["jpg","png","jpeg"])

#将页面拆分为两个布局
col1,col2 = st.columns(2)
if files is not None:
    #通过getvalue获得的数据是二值文件
    values  = files.getvalue()
    #st.write(values)
    #转换为opencv可以识别的
    cv2_img = cv2.imdecode(np.frombuffer(values,np.uint8),cv2.IMREAD_COLOR)

    #将左边布局显示原始图像
    with col1:
        st.image(cv2_img,'原始图像')


    #业务逻辑(最好单独放一个utils.py文件里面处理)
    def cannyDet(img):
        edge = cv2.Canny(cv2.cvtColor(cv2_img,cv2.COLOR_BGR2GRAY),100,200)
        return edge
    #边界检测
    img_gary = cv2.cvtColor(cv2_img,cv2.COLOR_BGR2GRAY)
    edge = cv2.Canny(img_gary,100,200)


    with col2:
        st.image(cannyDet(cv2_img),'检测结果')
    #image自动处理了二值文件
    st.image(cv2_img)

运行效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值