image = cv2.imread('1.bmp') # 原图像 red = int(yanse[4:6], 16) green = int(yanse[2:4], 16) blue = int(yanse[0:2], 16) target_color = (blue, green, red) # 目标颜色(BGR格式) threshold = 0 # 颜色容差阈值 result = self.remove_colors_except(image, target_color, threshold) # 显示结果图像 cv2.imwrite('222.bmp',result) return result 改为多色
时间: 2024-01-24 21:02:53 浏览: 133
PIL.Image.open和cv2.imread的比较与相互转换的方法
5星 · 资源好评率100%
如果你想把原图像中除了多个目标颜色以外的所有颜色都去掉,可以考虑以下代码:
```
import cv2
import numpy as np
def remove_colors_except(image, target_colors, threshold):
# 将目标颜色转为numpy数组
target_colors = np.array(target_colors)
# 将图像转为HSV格式
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 计算每个像素和目标颜色的差异
color_distances = np.abs(hsv_image[..., 0:3] - target_colors)
# 计算每个像素和目标颜色的差异是否小于阈值
mask = np.all(color_distances < threshold, axis=-1)
# 将不符合条件的像素置为黑色
result = np.zeros_like(image)
result[mask] = image[mask]
return result
if __name__ == '__main__':
image = cv2.imread('1.bmp') # 原图像
target_colors = [(0, 0, 255), (0, 255, 0)] # 目标颜色(BGR格式)
threshold = 30 # 颜色容差阈值
result = remove_colors_except(image, target_colors, threshold)
# 显示结果图像
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`target_colors`是一个包含多个目标颜色的列表,`threshold`是颜色容差阈值。对于每个像素,如果和所有目标颜色的差异都小于阈值,就保留该像素,否则就置为黑色。
阅读全文