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二叉树的实现实例
Nov 21 Python
利用python写个下载teahour音频的小脚本
May 08 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
使用python实现ANN
Dec 20 Python
Python之用户输入的实例
Jun 22 Python
浅述python2与python3的简单区别
Sep 19 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
提升Python程序性能的7个习惯
Apr 14 Python
python输入错误后删除的方法
Oct 12 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
javascript中创建对象的三种常用方法
2010/12/30 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
pyside写ui界面入门示例
2014/01/22 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
浅谈python标准库--functools.partial
2019/03/13 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
python利用opencv保存、播放视频
2020/11/02 Python
客服主管岗位职责
2013/12/13 职场文书
大型会议接待方案
2014/03/01 职场文书
学习两会精神心得范文
2014/03/17 职场文书
企业法人授权委托书
2014/09/25 职场文书
入党转正介绍人意见
2015/06/03 职场文书
合同补充协议书
2016/03/24 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL