Spaces:
Configuration error
Configuration error
| import matplotlib.pyplot as plt | |
| import cv2 | |
| import os | |
| from skimage.filters import gabor | |
| from skimage import data, io,color | |
| from skimage.color import rgb2gray | |
| import numpy as np | |
| import plotly.express as px | |
| from scipy import ndimage | |
| from sklearn.cluster import KMeans | |
| import PIL | |
| from PIL import Image | |
| import streamlit as st | |
| st.sidebar.title('Textile Detection') | |
| st.title('Detect Defects on clothing items') | |
| def f(a): | |
| # Read image. | |
| img = a.copy() | |
| # Convert to grayscale. | |
| gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
| # Blur using 3 * 3 kernel. | |
| gray_blurred = cv2.blur(gray, (3, 3)) | |
| # Apply Hough transform on the blurred image. | |
| detected_circles = cv2.HoughCircles(gray_blurred, cv2.HOUGH_GRADIENT, 1, 20, param1 = 50, | |
| param2 = 30, minRadius = 1, maxRadius = 40) | |
| # Draw circles that are detected. | |
| if detected_circles is not None: | |
| # Convert the circle parameters a, b and r to integers. | |
| detected_circles = np.uint16(np.around(detected_circles)) | |
| for pt in detected_circles[0, :]: | |
| a, b, r = pt[0], pt[1], pt[2] | |
| # Draw the circumference of the circle. | |
| cv2.circle(img, (a, b), r, (0, 255, 0), 2) | |
| # Draw a small circle (of radius 1) to show the center. | |
| cv2.circle(img, (a, b), 1, (0, 0, 255), 3) | |
| break | |
| return img | |
| image = st.sidebar.file_uploader("Upload an image", type = ['jpeg', 'jpg', 'png']) | |
| if image is not None: | |
| option = st.selectbox('Choose an option',\ | |
| ('Original Image', 'Hough Transformation', 'Gray Scale Transformation','OpenCV')) | |
| image = Image.open(image) | |
| image = np.array(image.convert('RGB')) | |
| if option == "Original Image": | |
| st.subheader("Original Image") | |
| st.image(image, use_column_width = True) | |
| if option == "Hough Transformation": | |
| st.subheader("Hough Transformation") | |
| b = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
| filt_real, filt_imag = gabor(b, frequency=0.05) | |
| gray = rgb2gray(image) | |
| gray_r = gray.reshape(gray.shape[0]*gray.shape[1]) | |
| for i in range(gray_r.shape[0]): | |
| if gray_r[i] > gray_r.mean(): | |
| gray_r[i] = 3 | |
| elif gray_r[i] > 0.5: | |
| gray_r[i] = 2 | |
| elif gray_r[i] > 0.25: | |
| gray_r[i] = 1 | |
| else: | |
| gray_r[i] = 0 | |
| gray = gray_r.reshape(gray.shape[0],gray.shape[1]) | |
| fig = px.imshow(gray) | |
| st.plotly_chart(fig) | |
| if option == "Gray Scale Transformation": | |
| b = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
| st.subheader("Gray Scale Transformation") | |
| st.image(b, use_column_width = True) | |
| if option == "OpenCV": | |
| st.subheader("OpenCV Algo") | |
| img = f(image) | |
| st.image(img, use_column_width = True) | |
| else: | |
| st.write("please upload an image in the formats shown above") |