最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用python-opencv批量生成帶噪點噪線的數字驗證碼

 更新時間:2020年12月21日 12:05:24   作者:大Q熊貓  
這篇文章主要介紹了如何使用python-opencv批量生成帶噪點噪線的數字驗證碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

第一次使用csdn寫一個文章,如果有什么寫的不對的地方,歡迎在下面評論指正,謝謝各位。

1.明確要使用的包

首先就是opencv的函數庫,還有python自帶的random和PIL(Image、ImageDraw、ImageFont),一般pthon3以上的版本都是內置安裝的,如果沒有安裝可以通過pip install的方法安裝具體操作如圖:

在這里插入圖片描述

輸入完按回車鍵即可安裝,因為我已經安裝了,就不輸入回車鍵了,安裝完了之后可以通過import的方式檢驗是否安裝成功。記住先輸入python進入python的編程環(huán)境在輸入import PIL,否則就會報錯

在這里插入圖片描述

2.引入庫

代碼如下(示例):

import cv2 as cv
import random
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

3.生成隨機的顏色組合get_random_color()

彩色圖像是由RGB三色通道構成的,但是要注意在opencv里面的彩色圖像是按照BGR的順序來構成彩色圖像的,與其他的地方采用圖像的順序不一樣(例如halcon就是安裝RGB的順序來引用彩色圖像),
采用函數的形式來形成一個三個數組,當函數返回的數值超過三個的時候,就會以數組的形式返回。
代碼如下(示例):

# 隨機生成不同顏色的組合
def get_random_color():
  B = random.randint(0, 255)
  G = random.randint(0, 255)
  R = random.randint(0, 255)
  # 防止生成白色噪聲噪線
  # 使用三個if條件判斷防止三個通道的顏色都是255(雖然是不可能事件)
  if B == 255:
    B = 0
  elif G == 255:
    G = 0
  elif R == 255:
    R = 0
  return(B, G, R)

如果你不放心是否返回了一個數組,可以進行驗證

#用于測試是否獲得了數組
a = get_random_color()
print(a)

4.生成顏色隨機,數值隨機的數字生成函數get_random_number()

這個函數比較簡單,原理也是和上面隨機生成顏色組合一樣。
代碼如下(示例):

# 隨機生成數字
def get_random_number():
  random_num = str(random.randint(0, 9))
  return random_num

5.隨機生成一張干凈的(不帶噪聲噪線)數字驗證碼圖像

使用PIL的Image、ImageDraw、ImageFont分別用于生成白色圖像背景、定義畫筆用于往圖像寫入數字、定義文字的字形和字體大小。
代碼如下(示例):

def generate_image():
  # 生成白色圖像,'RGB'類型,寬高為(150,50),底色為白色(255,255,255)
  image = Image.new('RGB', (150, 50), (255,255,255))
  # 定義畫筆,將圖像與畫筆關聯(lián)
  draw = ImageDraw.Draw(image)
  # 定義文字字形以及字體大小
  font = ImageFont.truetype("arial.ttf", size=36)

  name = "" # 定義一個空的字符串,用于不斷疊加數字,給圖像命名
  for i in range(5):
    random_number = get_random_number()
    # 不斷疊加隨機生成的數字,用于給圖像命名
    name += random_number

    # 在圖片上寫上數字,參數是:定位、數字(字符串)、顏色、字型
    draw.text((10+i*30, 0), random_number, get_random_color(), font=font)
  # 將圖像保存到指定的文件夾,下面使用xxxx的形式代表文件夾
  image.save('G:\xxxxxx\xxxxxxxx\%s.png' % name)

字體可以根據自己電腦已有的字體來選擇,具體路徑是C:\Windows\Fonts,

 font = ImageFont.truetype("arial.ttf", size=36)

6.往圖像添加噪聲噪線

函數的這一步不使用新的函數,繼續(xù)接著上一個函數( generate_image())輸入代碼,為什么不使用?因為在讀取圖像的時候我們會用到name這個函數,如果使用新的函數的話,就無法使用這個變量。當然也可以通過類的方法,實現兩個函數之間的變量可以相互調用,這個就稍微麻煩點,這里就不過多講述了。
代碼如下(示例):
(再次提醒下面代碼是接著generate_image()的,所以下面代碼都有一個縮進)

width = 150
  height = 50
  # 讀取文件夾的圖像,通過name來讀取指定的圖像,
  img = cv.imread('G:\xxxxxx\xxxxxxxxxxxx\%s.png' %name)
  # 繪制噪點
  for i in range(5):
    x = random.randint(0, width)
    y = random.randint(0, height)
    # 繪制實心圓,必須輸入參數分別是:圖像、圓心的位置、半徑、顏色,
    #最后一個是thickness默認是None,繪制空心圓,指定為-1繪制實心圓
    cv.circle(img, (x,y), 1, get_random_color(), -1)

  # 繪制噪線
  for i in range(3):
    x1 = random.randint(0, width)
    y1 = random.randint(0, height)
    x2 = random.randint(0, width)
    y2 = random.randint(0, height)
    # 繪制線條,參數分別是:圖像、左上角的坐標、右下角的坐標、顏色
    cv.line(img, (x1,y1), (x2,y2), get_random_color())
  # 保存圖像
  cv.imwrite(r'G:\xxxxx\xxxxxxx\%s.png'%name, img)

7.調用函數生成數字驗證碼圖像

所有的函數都已經寫完,直接調用圖像生成函數就行了。
使用for循環(huán),循環(huán)調用generate_image()即可實現批量生成圖像,想要多少張就循環(huán)多少次。

for i in range(30):
  generate_image()

8.總結

到這一步所有的工作已經完成了,可以去保存的指定文件夾看一下,是否成功生成,一般程序沒有報錯基本都是可以生成的。

第一次使用csdn寫文章,肯定會有很多紕漏和不足,有什么建議和意見都可以在下面評論提出,我會一一更正,謝謝各位

到此這篇關于如何使用python-opencv批量生成帶噪點噪線的數字驗證碼的文章就介紹到這了,更多相關opencv批量生成噪點驗證碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 一文帶你深入理解Flask中的Session和Cookies

    一文帶你深入理解Flask中的Session和Cookies

    Flask,作為一個靈活的微型 web 框架,提供了會話(Session)和 Cookies 管理的能力,本文將深入探討 Flask 中的會話和 Cookies 的概念、工作機制以及應用實例,希望對大家有所幫助
    2023-12-12
  • Python?NumPy矩陣對象詳解及方法

    Python?NumPy矩陣對象詳解及方法

    這篇文章主要介紹了Python?NumPy矩陣對象詳解及方法,文章圍繞主題展開詳細的內容戒殺,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • Python聚類算法之基本K均值實例詳解

    Python聚類算法之基本K均值實例詳解

    這篇文章主要介紹了Python聚類算法之基本K均值運算技巧,結合實例形式較為詳細的分析了基本K均值的原理與相關實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 淺析python 定時拆分備份 nginx 日志的方法

    淺析python 定時拆分備份 nginx 日志的方法

    本文給大家分享python 定時拆分備份 nginx 日志的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-04-04
  • 詳細過程帶你用Python做車牌自動識別系統(tǒng)

    詳細過程帶你用Python做車牌自動識別系統(tǒng)

    這篇文章主要介紹了帶你用Python做車牌自動識別系統(tǒng)的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • PyCharm實現本地恢復或查看歷史代碼

    PyCharm實現本地恢復或查看歷史代碼

    這篇文章主要介紹了PyCharm實現本地恢復或查看歷史代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Django中間件的5種自定義方法

    詳解Django中間件的5種自定義方法

    這篇文章主要介紹了詳解Django中間件的5種自定義方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python實現名片管理系統(tǒng)項目

    python實現名片管理系統(tǒng)項目

    這篇文章主要為大家詳細介紹了python實現名片管理系統(tǒng)項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 詳解如何在cmd命令窗口中搭建簡單的python開發(fā)環(huán)境

    詳解如何在cmd命令窗口中搭建簡單的python開發(fā)環(huán)境

    這篇文章主要介紹了詳解如何在cmd命令窗口中搭建簡單的python開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python編寫的com組件發(fā)生R6034錯誤的原因與解決辦法

    Python編寫的com組件發(fā)生R6034錯誤的原因與解決辦法

    pythoncom27.dll可能沒有包含manifest信息,或者沒有包含正確的manifest信息,或者系統(tǒng)中的c++ runtime library受到破壞都有可能造成這種現象
    2013-04-04

最新評論

漳浦县| 邮箱| 松阳县| 多伦县| 平和县| 腾冲县| 普兰店市| 阳东县| 金昌市| 威海市| 江津市| 来凤县| 上林县| 虹口区| 花莲市| 玉门市| 县级市| 蒙山县| 方正县| 石柱| 钦州市| 吉林省| 临泽县| 东安县| 平遥县| 龙山县| 三都| 龙泉市| 湄潭县| 香河县| 兴宁市| 杭锦后旗| 九龙坡区| 朝阳县| 长岛县| 金沙县| 财经| 原阳县| 宾阳县| 碌曲县| 吉木乃县|