So I am running a code that will keep reading the processed images from an AI program that is written into a temp.jpeg file. The program will continuously write to this .jpeg file and Streamlit will continuously read this file to sort of stream the results in a designated video space.
The code I am using is as followed:
import streamlit as st
import cv2
vid_area = st.empty()
@st.cache_resource
def read_image():
try:
with open('temp.jpeg', 'rb'):
return cv2.imopen("temp.jpeg")
except:
return None
while True:
frame = read_image()
if frame is not None:
vid_area.image(frame, channels='BGR')
I’m also open to using any other method to accomplish the same task.
Expected behavior:
The images are streamed to the preferred host
Actual behavior:
Without st.cache_resource, the images are streamed correctly, but the memory will eventually run out. With st.cache_resource, the first image is read but it will not change.
Debug info
- Streamlit version: 1.21.0
- Python version: 3.8.10
- Using PyEnv
- OS version: Ubuntu