bhagwandas commited on
Commit
476c0f9
·
verified ·
1 Parent(s): 54cca4d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -18
app.py CHANGED
@@ -22,8 +22,17 @@ def analyze_crack(image):
22
 
23
  return edges, crack_lengths, crack_widths
24
 
 
 
 
 
 
 
 
 
25
  def main():
26
- st.set_page_config(page_title='Structural Integrity Analyst', layout='wide')
 
27
  st.title('🏗️ Structural Integrity Analyst')
28
 
29
  st.sidebar.header("Upload Crack Image")
@@ -35,35 +44,46 @@ def main():
35
 
36
  edges, crack_lengths, crack_widths = analyze_crack(image)
37
 
38
- st.subheader("Uploaded Image")
39
- st.image(uploaded_file, caption="Uploaded Image", use_column_width=True)
 
 
 
40
 
41
- # Display processed image
42
- st.subheader("Processed Crack Detection")
43
- fig, ax = plt.subplots()
44
- ax.imshow(edges, cmap='gray')
45
- ax.axis("off")
46
- st.pyplot(fig)
 
 
 
 
47
 
48
  # Data Analysis
49
  data = pd.DataFrame({
50
  "Crack Length (pixels)": crack_lengths,
51
- "Crack Width (pixels)": crack_widths
 
52
  })
53
 
54
- st.subheader("Crack Metrics")
55
  st.dataframe(data)
56
 
 
 
 
 
 
 
 
57
  # Visualization
58
- fig1 = px.histogram(data, x="Crack Length (pixels)", title="Crack Length Distribution", nbins=10)
59
- fig2 = px.histogram(data, x="Crack Width (pixels)", title="Crack Width Distribution", nbins=10)
60
 
61
  st.plotly_chart(fig1, use_container_width=True)
62
  st.plotly_chart(fig2, use_container_width=True)
63
 
64
  if __name__ == "__main__":
65
- main()
66
-
67
-
68
-
69
-
 
22
 
23
  return edges, crack_lengths, crack_widths
24
 
25
+ def classify_crack(length, width):
26
+ if length > 150 or width > 20:
27
+ return "Major"
28
+ elif length > 80 or width > 10:
29
+ return "Moderate"
30
+ else:
31
+ return "Minor"
32
+
33
  def main():
34
+ st.set_page_config(page_title='Structural Integrity Analyst', layout='wide', initial_sidebar_state='expanded')
35
+
36
  st.title('🏗️ Structural Integrity Analyst')
37
 
38
  st.sidebar.header("Upload Crack Image")
 
44
 
45
  edges, crack_lengths, crack_widths = analyze_crack(image)
46
 
47
+ # Classification
48
+ classifications = [classify_crack(l, w) for l, w in zip(crack_lengths, crack_widths)]
49
+
50
+ # Organize layout
51
+ col1, col2 = st.columns(2)
52
 
53
+ with col1:
54
+ st.subheader("Uploaded Image")
55
+ st.image(uploaded_file, caption="Uploaded Image", use_column_width=True)
56
+
57
+ with col2:
58
+ st.subheader("Processed Crack Detection")
59
+ fig, ax = plt.subplots()
60
+ ax.imshow(edges, cmap='gray')
61
+ ax.axis("off")
62
+ st.pyplot(fig)
63
 
64
  # Data Analysis
65
  data = pd.DataFrame({
66
  "Crack Length (pixels)": crack_lengths,
67
+ "Crack Width (pixels)": crack_widths,
68
+ "Severity": classifications
69
  })
70
 
71
+ st.subheader("Crack Metrics & Classification")
72
  st.dataframe(data)
73
 
74
+ # Discussion Tab
75
+ st.subheader("Discussion")
76
+ st.write("Cracks are classified based on their length and width:")
77
+ st.write("- **Major:** Cracks exceeding 150 pixels in length or 20 pixels in width indicate severe damage and require immediate attention.")
78
+ st.write("- **Moderate:** Cracks between 80-150 pixels in length or 10-20 pixels in width are moderate and should be monitored closely.")
79
+ st.write("- **Minor:** Cracks below 80 pixels in length or 10 pixels in width are minor and may not require immediate intervention but should be observed over time.")
80
+
81
  # Visualization
82
+ fig1 = px.histogram(data, x="Crack Length (pixels)", color="Severity", title="Crack Length Distribution", nbins=10)
83
+ fig2 = px.histogram(data, x="Crack Width (pixels)", color="Severity", title="Crack Width Distribution", nbins=10)
84
 
85
  st.plotly_chart(fig1, use_container_width=True)
86
  st.plotly_chart(fig2, use_container_width=True)
87
 
88
  if __name__ == "__main__":
89
+ main()