どのようにpython-opencvを使ってロットでノイズを発生させるデジタル認証コードですか?
csdnを初めて使って文章を書きます。もし何か間違ったところがあれば、下記のコメントを歓迎します。ありがとうございます。
1.明確に使うカバン
まずopencvの関数ライブラリです。pythonが持っているランドムとPIL(Image、ImageDraw、ImageFont)もあります。一般的なpthone 3以上のバージョンは内蔵されています。もしインストールされていないならばpip installの方法で具体的な操作をインストールしてください。
リターンキーを入力したらすぐにインストールできます。もうインストールしたので、リターンキーを入力しません。インストールが終わったら、importの方式でインストールが成功したかどうかを確認できます。pythonを先に入力してpythonに入るプログラム環境を覚えてください。import PILを入力するとエラーが発生します。
2.ライブラリの導入
コードは以下の通りです。
カラー画像はRGB 3色チャンネルで構成されていますが、オプンcv内のカラー画像はBGRの順にカラー画像を構成していますので、他の場所とは画像を採用する順番が異なります。
関数の形で3つの配列を形成し、関数が返した値が3つを超えると、配列として返されます。
コードは以下の通りです。
この関数は比較的簡単で、原理は上のランダムに色の組み合わせを生成するのと同じです。
コードは以下の通りです。
PILを使用したImage、ImageDraw、ImageFontはそれぞれ白色の画像背景を生成するために用いられ、画像に数字を書き込むためのブラシを定義し、文字の字形とフォントサイズを定義します。
コードは以下の通りです。
関数のこのステップは新しい関数を使わずに、前の関数を続けます。イメージ()はコードを入力しますが、なぜ使わないですか?画像を読み込む時はnameという関数が使われますので、新しい関数を使うとこの変数は使えません。もちろん、クラスの方法によって、二つの関数の間の変数を相互に呼び出すことができます。
コードは以下の通りです。
(再度注意してください。下記のコードは続いてgenerate_です。イメージ()のため、下のコードは一つのインデントがあります。
すべての関数はすでに書き終わりました。直接画像生成関数を呼び出してもいいです。
forサイクルを使って、Gnerate_を循環的に呼び出します。イメージ()は大量に画像を生成することができます。何枚で何回も繰り返します。
このステップですべての作業が完了しました。保存されている指定のフォルダを確認してみてください。成功的に作成されたかどうかは、通常のプログラムにエラーがなくても基本的には作成できます。
csdnを初めて使って文章を書いたら、間違いなく多くの間違いと不足があります。何か提案や意見がありましたら、下のコメントで提出してください。一つ一つ訂正します。ありがとうございます。
ここでは、python-opencvを使って、ノイズのあるデジタル認証コードを大量に生成する方法についての記事を紹介します。これまでの記事を検索してください。または、下記の関連記事をご覧ください。これからもよろしくお願いします。
1.明確に使うカバン
まずopencvの関数ライブラリです。pythonが持っているランドムとPIL(Image、ImageDraw、ImageFont)もあります。一般的なpthone 3以上のバージョンは内蔵されています。もしインストールされていないならばpip installの方法で具体的な操作をインストールしてください。
リターンキーを入力したらすぐにインストールできます。もうインストールしたので、リターンキーを入力しません。インストールが終わったら、importの方式でインストールが成功したかどうかを確認できます。pythonを先に入力してpythonに入るプログラム環境を覚えてください。import PILを入力するとエラーが発生します。
2.ライブラリの導入
コードは以下の通りです。
import cv2 as cv
import random
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
3.ランダムな色の組み合わせを生成するget_ランドムカラーカラー画像はRGB 3色チャンネルで構成されていますが、オプンcv内のカラー画像はBGRの順にカラー画像を構成していますので、他の場所とは画像を採用する順番が異なります。
関数の形で3つの配列を形成し、関数が返した値が3つを超えると、配列として返されます。
コードは以下の通りです。
#
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_ランドム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))
# ,
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.画像にノイズを追加する関数のこのステップは新しい関数を使わずに、前の関数を続けます。イメージ()はコードを入力しますが、なぜ使わないですか?画像を読み込む時はnameという関数が使われますので、新しい関数を使うとこの変数は使えません。もちろん、クラスの方法によって、二つの関数の間の変数を相互に呼び出すことができます。
コードは以下の通りです。
(再度注意してください。下記のコードは続いてgenerate_です。イメージ()のため、下のコードは一つのインデントがあります。
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サイクルを使って、Gnerate_を循環的に呼び出します。イメージ()は大量に画像を生成することができます。何枚で何回も繰り返します。
for i in range(30):
generate_image()
8.まとめこのステップですべての作業が完了しました。保存されている指定のフォルダを確認してみてください。成功的に作成されたかどうかは、通常のプログラムにエラーがなくても基本的には作成できます。
csdnを初めて使って文章を書いたら、間違いなく多くの間違いと不足があります。何か提案や意見がありましたら、下のコメントで提出してください。一つ一つ訂正します。ありがとうございます。
ここでは、python-opencvを使って、ノイズのあるデジタル認証コードを大量に生成する方法についての記事を紹介します。これまでの記事を検索してください。または、下記の関連記事をご覧ください。これからもよろしくお願いします。