cv根据颜色保存验证码
import cv2
import numpy as np
def get_color_pic(read_img, write_img, lower_color_lis, upper_color_list):
# 读取图像
image = cv2.imread(read_img)
# 将图像转换到 HSV 颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 定义颜色范围(在HSV中)
lower_ = np.array(lower_color_lis)
upper_ = np.array(upper_color_list)
# 创建一个颜色的掩码
mask = cv2.inRange(hsv_image, lower_, upper_)
# 将掩码应用于原始图像,保留接近红色的像素
result = cv2.bitwise_and(image, image, mask=mask)
# result = remove_isolated_points(result)
result = image.copy()
result[mask == 0] = [255, 255, 255] # 设置背景为白色
# 显示处理后的图像
cv2.imshow('Result Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
# cv2.imwrite(write_img,result)
cv2.imwrite(write_img, result, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
#
if __name__ == '__main__':
png_name = 'screen0.png'
read_img = r"D:\Nextcloud\swverification_svm\image_raw\%s" % png_name
write_img = r"D:\Nextcloud\swverification_svm\test_img\%s" % png_name
get_color_pic(write_img, write_img, lower_color_lis=[0, 100, 100], upper_color_list=[10, 255, 255])
# 红 [0, 100, 100], [10, 255, 255]
# 蓝 [110, 100, 100] [130, 255, 255]
# 黄 [20, 100, 100] [30, 255, 255]
# 绿 [35, 100, 100] [85, 255, 255]
这段代码是一个Python脚本,用于从输入的图像中提取指定颜色范围的像素,并将结果保存到输出图像中。下面是代码的解释:
1. 首先,导入了OpenCV库和NumPy库,这些库用于图像处理和数值操作。
2. 定义了一个名为`get_color_pic`的函数,它接受输入图像路径(`read_img`)、输出图像路径(`write_img`)以及指定颜色的下限(`lower_color_lis`)和上限(`upper_color_list`)。
3. 在函数内部,首先读取了输入图像,然后将其转换为HSV颜色空间(Hue, Saturation, Value)。HSV颜色空间更适合处理颜色。
4. 接下来,使用`cv2.inRange`函数创建一个掩码(mask),该掩码会根据指定的下限和上限颜色范围,将符合条件的像素设置为白色(255),不符合条件的像素设置为黑色(0)。
5. 使用`cv2.bitwise_and`函数将掩码应用于原始图像,以保留符合条件的像素。这将生成一个结果图像,其中只有符合指定颜色范围的像素被保留,其他像素为黑色。
6. 最后,通过`cv2.imshow`函数显示处理后的图像,等待用户按下任意键关闭图像窗口。然后,通过`cv2.imwrite`函数将结果图像保存到指定的输出路径。
在代码的主程序部分,示例了如何调用`get_color_pic`函数来提取特定颜色范围的像素。在示例中,提取了黄色范围的像素(颜色范围在HSV中定义为[20, 100, 100]到[30, 255, 255]),并将结果保存到输出图像中。您可以根据需要调整颜色范围的下限和上限,以提取不同颜色的像素。
本文作者: 永生
本文链接: https://yys.zone/detail/?id=304
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!