CV四位导图

无意中看到别人总结的这张图,感觉棒棒哒
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用OpenCV和Python制作混合大小写字母和数字的四位验证码图片的代码: ```python import cv2 import numpy as np import random # 生成四位随机验证码 def generate_code(): code = '' for i in range(4): # 生成随机数字或字母 code += str(random.choice([random.randint(0, 9), chr(random.randint(65, 90)), chr(random.randint(97, 122))])) return code # 创建验证码图像 def create_image(code): # 设置图像大小 width, height = 120, 40 # 创建图像 img = np.zeros((height, width, 3), dtype=np.uint8) # 设置背景颜色 img.fill(255) # 设置字体 font = cv2.FONT_HERSHEY_SIMPLEX # 获取字体大小 font_scale = 1 thickness = 2 size = cv2.getTextSize(code, font, font_scale, thickness)[0] # 设置文字位置 x = int((width - size[0]) / 2) y = int((height + size[1]) / 2) # 绘制文字 cv2.putText(img, code, (x, y), font, font_scale, (0, 0, 0), thickness) return img # 扭曲图像 def distort(img): # 获取图像大小 height, width = img.shape[:2] # 设置扭曲强度 factor = random.uniform(-0.05, 0.05) # 创建扭曲矩阵 pts1 = np.float32([[0, 0], [width, 0], [0, height], [width, height]]) pts2 = np.float32([[factor * random.randint(0, 5), factor * random.randint(0, 5)], [width - factor * random.randint(0, 5), factor * random.randint(0, 5)], [factor * random.randint(0, 5), height - factor * random.randint(0, 5)], [width - factor * random.randint(0, 5), height - factor * random.randint(0, 5)]]) M = cv2.getPerspectiveTransform(pts1, pts2) # 扭曲图像 img = cv2.warpPerspective(img, M, (width, height)) return img # 添加噪点 def add_noise(img): # 获取图像大小 height, width = img.shape[:2] # 设置噪点数量 num = random.randint(50, 100) # 添加噪点 for i in range(num): x = random.randint(0, width - 1) y = random.randint(0, height - 1) img[y, x] = (0, 0, 0) return img # 制作验证码图像 def create_verification_code(): # 生成验证码 code = generate_code() # 创建验证码图像 img = create_image(code) # 扭曲图像 img = distort(img) # 添加噪点 img = add_noise(img) # 返回验证码图像和验证码 return img, code ``` 调用`create_verification_code()`函数即可得到一个随机的验证码图像和验证码字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值