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 相关文章推荐
python 切片和range()用法说明
Mar 24 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
python实现识别相似图片小结
Feb 22 Python
Python selenium如何设置等待时间
Sep 15 Python
Python中创建二维数组
Oct 17 Python
Python实现多进程的四种方式
Feb 22 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python OrderedDict的使用案例解析
Oct 25 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
使用scrapy实现增量式爬取方式
Jun 21 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下使用无限生命期Session的方法
2007/03/16 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP常用技巧汇总
2016/03/04 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python字符串连接方法分析
2016/04/12 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
节约用电通知
2015/04/25 职场文书
如何写好竞聘报告
2019/04/03 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
JavaScript组合继承详解
2021/11/07 Javascript
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js