请给出一段完整的python程序,要求能够选择图片文件,并在打开的图像中使用鼠标选取三种颜色的点,选定后对图像进行处理,保留选定的三种颜色,并将图像中其他颜色的所有点更改为黑色。处理后的结果保存在指定位置
时间: 2023-06-20 16:04:51 浏览: 99
以下是一段完整的 Python 代码,实现了选择图片文件,使用鼠标选取三种颜色的点,对图像进行处理,保留选定的三种颜色,并将图像中其他颜色的所有点更改为黑色,并将处理后的结果保存在指定位置。
```python
import cv2
import numpy as np
def mouse_callback(event, x, y, flags, param):
global color_points, img
if event == cv2.EVENT_LBUTTONUP:
color = img[y,x]
color_points.append(color)
print("Selected color:", color)
color_points = []
img_path = input("Enter image path: ")
img = cv2.imread(img_path)
cv2.namedWindow("image")
cv2.setMouseCallback("image", mouse_callback)
while True:
cv2.imshow("image", img)
key = cv2.waitKey(1)
if key == ord("q"):
break
elif key == ord("p"):
if len(color_points) != 3:
print("Please select three colors.")
continue
mask = np.zeros(img.shape[:2], np.uint8)
for color in color_points:
mask[np.where((img==color).all(axis=2))] = 255
result = cv2.bitwise_and(img, img, mask=mask)
for color in color_points:
img[np.where((result==color).all(axis=2))] = 0
cv2.imshow("result", result)
cv2.imwrite("result.jpg", result)
print("Result saved to result.jpg")
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行该程序后,会要求输入图片路径。然后,程序会打开该图片,并等待用户用鼠标选取三种颜色的点。用户可以在图片上单击三次,选取三种颜色的点。选取完成后,按下键盘上的“p”键,程序会对图像进行处理,并显示处理后的结果。用户可以查看处理后的结果,如果满意,可以按下任意键,程序会将结果保存为 result.jpg 文件,并退出程序。如果不满意,可以再次按下“p”键,重新进行处理。
注意,该程序仅支持选取 RGB 颜色空间中的颜色点。如果需要支持其他颜色空间,需要修改程序中的代码。
阅读全文