File size: 1,346 Bytes
e972242 |
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 |
import cv2
import tempfile
from io import BytesIO
import streamlit as st
import numpy as np
def resize_image(image, size):
return cv2.resize(image, size, interpolation=cv2.INTER_AREA)
def automatically_change_segment_colors(segmented_image):
# Generate a unique color for each segment
unique_labels = np.unique(segmented_image.reshape(-1, 3), axis=0)
new_colors = np.random.randint(0, 256, (len(unique_labels), 3), dtype=np.uint8)
# Apply the new colors to the segmented image
for i, label in enumerate(unique_labels):
mask = np.all(segmented_image == label, axis=-1)
segmented_image[mask] = new_colors[i]
return segmented_image
def download_image(image_array, file_name):
try:
image_array = cv2.cvtColor(image_array, cv2.COLOR_BGR2RGB)
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.png')
success = cv2.imwrite(temp_file.name, image_array)
if not success:
st.error("Could not save image.")
return
with open(temp_file.name, 'rb') as f:
bytes = f.read()
st.download_button(
label="Download Image",
data=BytesIO(bytes),
file_name=file_name,
mime='image/png',
)
except Exception as e:
st.error(f"An error occurred: {e}") |