python基于opencv批量生成验证码的示例


Posted in Python onApril 28, 2021

基本思路是使用opencv来把随机生成的字符,和随机生成的线段,放到一个随机生成的图像中去。

  虽然没有加复杂的形态学处理,但是目前看起来效果还不错

  尝试生成1000张图片,但是最后只有998张,因为有有重复的,被覆盖掉了。

  代码如下:

import cv2
import numpy as np
line_num = 10
pic_num = 1000
path = "./imgs/"
def randcolor():        
    return (np.random.randint(0,255),np.random.randint(0,255),np.random.randint(0,255))
    
def randchar():
    return chr(np.random.randint(65,90))
    
def randpos(x_start,x_end,y_start,y_end):
    return (np.random.randint(x_start,x_end),
            np.random.randint(y_start,y_end))
    
    
img_heigth = 60
img_width = 240
for i in range(pic_num):
    img_name = ""
    #生成一个随机矩阵,randint(low[, high, size, dtype])
    img = np.random.randint(100,200,(img_heigth,img_width, 3), np.uint8)
    #显示图像
    #cv2.imshow("ranImg",img)
    
    x_pos = 0
    y_pos = 25
    for i in range(4):
        char = randchar()
        img_name += char
        cv2.putText(img,char,
                    (np.random.randint(x_pos,x_pos + 50),np.random.randint(y_pos,y_pos + 35)), 
                    cv2.FONT_HERSHEY_SIMPLEX,
                    1.5,
                    randcolor(),
                    2,
                    cv2.LINE_AA)
        x_pos += 45
    
    #cv2.imshow("res",img)
    
    #添加线段
    for i in range(line_num):
        img = cv2.line(img,
                       randpos(0,img_width,0,img_heigth),
                       randpos(0,img_width,0,img_heigth),
                        randcolor(),
                        np.random.randint(1,2))
        
    #cv2.imshow("line",img)
    cv2.imwrite(path + img_name + ".jpg",img)
    #cv2.waitKey(0)                  
    #cv2.destroyAllWindows()

  结果:

python基于opencv批量生成验证码的示例

以上就是python基于opencv批量生成验证码的示例的详细内容,更多关于python 批量生成验证码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
python简单商城购物车实例代码
Mar 15 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
Python加密与解密模块hashlib与hmac
Jun 05 Python
python基于tkinter制作下班倒计时工具
Apr 28 #Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
k-means & DBSCAN 总结
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 #Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
python实现腾讯滑块验证码识别
Apr 27 #Python
python实现调用摄像头并拍照发邮箱
Apr 27 #Python
You might like
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python使用super()出现错误解决办法
2017/08/14 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
草船借箭教学反思
2014/02/03 职场文书
服装店营销方案
2014/03/10 职场文书
通信工程求职信
2014/07/16 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
指导老师鉴定意见
2015/06/05 职场文书