用python编写一个图片目标颜色区域为白色,其他区域为黑色的程序,程序要提供GUI
时间: 2024-05-03 18:21:28 浏览: 12
界面,可以打开和保存图片。
以下是使用Python和OpenCV库编写的代码示例:
```python
import cv2
import tkinter as tk
from tkinter import filedialog
def open_image():
global img, img_path
img_path = filedialog.askopenfilename()
img = cv2.imread(img_path)
cv2.imshow("Original Image", img)
def process_image():
global img
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_color = (0, 0, 0)
upper_color = (0, 0, 255)
mask = cv2.inRange(hsv, lower_color, upper_color)
result = cv2.bitwise_and(img, img, mask=mask)
gray = cv2.cvtColor(result, cv2.COLOR_BGR2GRAY)
_, threshold = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)
cv2.imshow("Processed Image", threshold)
def save_image():
global img, img_path
save_path = filedialog.asksaveasfilename(defaultextension=".jpg")
cv2.imwrite(save_path, img)
root = tk.Tk()
root.title("Image Processing")
open_button = tk.Button(root, text="Open Image", command=open_image)
open_button.pack()
process_button = tk.Button(root, text="Process Image", command=process_image)
process_button.pack()
save_button = tk.Button(root, text="Save Image", command=save_image)
save_button.pack()
cv2.namedWindow("Original Image", cv2.WINDOW_NORMAL)
cv2.namedWindow("Processed Image", cv2.WINDOW_NORMAL)
root.mainloop()
```
该程序使用了tkinter库创建了一个简单的GUI界面,包括打开、处理和保存按钮。当用户点击“Open Image”按钮时,程序会打开文件对话框,让用户选择要处理的图像文件。然后,程序会将图像加载到内存中,并在窗口中显示原始图像。
当用户点击“Process Image”按钮时,程序会将图像转换为HSV颜色空间,并使用cv2.inRange函数创建一个掩码,将目标颜色区域设置为白色,其他区域设置为黑色。然后,程序使用cv2.bitwise_and函数将掩码应用于原始图像,只保留目标颜色区域。接下来,程序将结果转换为灰度图像,并使用cv2.threshold函数将灰度图像二值化。最后,程序在窗口中显示处理后的图像。
当用户点击“Save Image”按钮时,程序会打开文件对话框,让用户选择保存位置和文件名,并将处理后的图像保存为JPEG格式。