-
Notifications
You must be signed in to change notification settings - Fork 0
/
SR Task 1.py
170 lines (145 loc) · 4.75 KB
/
SR Task 1.py
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import cv2
my_image = None
backup_image1 = None
backup_image2 = None
backup_image3 = None
def display_main_menu():
print("\nMy Image Processing App:")
print("1. Load an image")
print("2. Display the image")
print("3. Save the image")
print("4. Convert to different color formats")
print("5. Split image channels (R, G, B)")
print("6. Remove image background")
print("7. Apply image blurring")
print("8. Exit the program")
print("9. See the previous images in backup")
def image_backup():
global my_image
global backup_image1
global backup_image2
global backup_image3
backup_image3 = backup_image2
backup_image2 = backup_image1
backup_image1 = my_image
def load_image():
global my_image
image_path = input("Enter the path to the image: ")
image_backup()
my_image = cv2.imread(image_path)
if my_image is not None:
print("Image loaded successfully.")
else:
print("Image not found or could not be loaded.")
def display_image():
global my_image
if my_image is not None:
cv2.imshow("My Image", my_image)
print("Press the space to continue...")
key = cv2.waitKey(0) & 0xFF
if key == 32:
cv2.destroyAllWindows()
else:
print("No image to display. Please load an image first.")
def save_processed_image():
global my_image
if my_image is not None:
output_path = input("Enter the path to save the processed image: ")
cv2.imwrite(output_path, my_image)
print("Processed image saved successfully.")
else:
print("No image to save. Please load an image first.")
def convert_color_format():
global my_image
if my_image is not None:
print("Choose a color format to convert to:")
print("1. RGB")
print("2. BGR")
print("3. HSV")
print("4. Grayscale")
__ = int(input("Enter your choice: "))
image_backup()
if __ == 1:
my_image = cv2.cvtColor(my_image, cv2.COLOR_BGR2RGB)
elif __ == 2:
my_image = cv2.cvtColor(my_image, cv2.COLOR_RGB2BGR)
elif __ == 3:
my_image = cv2.cvtColor(my_image, cv2.COLOR_BGR2HSV)
elif __ == 4:
my_image = cv2.cvtColor(my_image, cv2.COLOR_BGR2GRAY)
else:
print("Invalid choice. Please select a valid option.")
else:
print("No image to convert. Please load an image first.")
def split_color_channels():
global my_image
if my_image is not None:
image_backup()
channels = cv2.split(my_image)
for i, channel in enumerate(channels):
cv2.imshow(f"Channel {i}", channel)
print("Press the space to continue...")
key = cv2.waitKey(0) & 0xFF
if key == 32:
cv2.destroyAllWindows()
else:
print("No image to split. Please load an image first.")
def process_background_removal():
global my_image
if my_image is not None:
print("Background removal feature is not yet implemented.")
else:
print("No image to process. Please load an image first.")
def apply_image_blur():
global my_image
if my_image is not None:
print("Choose a blur type:")
print("1. Gaussian Blur")
print("2. Median Blur")
print("3. Bilateral Filter")
_ = int(input("Enter your choice: "))
image_backup()
if _ == 1:
my_image = cv2.GaussianBlur(my_image, (5, 5), 0)
elif _ == 2:
my_image = cv2.medianBlur(my_image, 5)
elif _ == 3:
my_image = cv2.bilateralFilter(my_image, 9, 75, 75)
else:
print("Invalid choice. Please select a valid option.")
else:
print("No image to apply blur. Please load an image first.")
def backup_loader():
if backup_image1 is not None:
cv2.imshow("backup_image1", backup_image1)
cv2.waitKey(0)
if backup_image2 is not None:
cv2.imshow("backup_image2", backup_image2)
cv2.waitKey(0)
if backup_image3 is not None:
cv2.imshow("backup_image3", backup_image3)
cv2.waitKey(0)
while True:
display_main_menu()
choice = input("Enter your choice (1-9): ")
if choice == '1':
load_image()
elif choice == '2':
display_image()
elif choice == '3':
save_processed_image()
elif choice == '4':
convert_color_format()
elif choice == '5':
split_color_channels()
elif choice == '6':
process_background_removal()
elif choice == '7':
apply_image_blur()
elif choice == '8':
break
elif choice == '9':
backup_loader()
else:
print("Invalid choice. Please select a valid option.")
print("Thank you for using My Image Processing App!")