TECH MEDIA

テックメディア


その他
ブログ

【記録】OpenCVの画像処理にトライ

その他技術
目次
  1. 01|はじめに
  2. 02|OpenCVについて
  3. 03|画像処理
  4. 04|まとめ
  5. 05|参考

1. はじめに

皆さん、おはこんばんにちは!
エンジニアのみやもとです。

現在、クレジットカードの番号認識を実現しようと色々試しています。
画像はRGBという「赤・緑・青」の3光源で構成されており、そのままでは認識が難しいため、画像を認識しやすいようにOpenCVを使用して画像処理を行っていきたいと思います。
今回は、画像処理の方法について記録していきます。

2. OpenCVについて

3. 画像処理

グレースケール

import cv2

image = cv2.imread('\\test_cre.png')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cv2.imshow('card', gray)

グレースケール(低輝度化)

import sys
import cv2
import numpy

gamma22LUT = numpy.array([pow(x/255.0, 2.2) for x in range(256)], dtype='float32')
img_bgr= cv2.imread('\\test_cre.png')
img_bgrL = cv2.LUT(img_bgr, gamma22LUT)
img_grayL = cv2.cvtColor(img_bgrL, cv2.COLOR_BGR2GRAY)
img_gray = pow(img_grayL, 1.0/2.2) * 255
cv2.imshow('card', img_gray)
cv2.waitKey()

2値化

import cv2

image = cv2.imread('\\test_cre.png')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,0,255,cv2.THRESH_OTSU + cv2.THRESH_BINARY)[1]

cv2.imshow('card', thresh)

白黒反転

import cv2

image = cv2.imread('\\test_cre.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)[1]
image2 = cv2.bitwise_not(thresh)
cv2.imshow('card', image2)
cv2.waitKey()

4. まとめ

Kaggleでもスコアを上げるためにデータ補正を行いました。
画像処理もこれと同じで認識しやすい形があるようで、処理によっては認識される文字や範囲が異なることもあります。今後もクレジットカードの番号認識を実装するため、画像処理について学んでいこうと思います。

5. 参考

Python でグレースケール(grayscale)化

RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?