背景
数独アプリを作成しています。
その途中のプロセスで何となく、画像を分割して、横に並べてみたいなっておもい、ググりながら作成しました。
誰かの参考になると幸いです。
##サンプルコード
split_img_and_layout_Horizontally.py
import numpy as np
import cv2
# 入力画像を読み込み
img = cv2.imread("sudoku_wiki.png")
#wiki https://en.wikipedia.org/wiki/Sudoku
#分割サイズを定義
vertical_split = 9
horizonal_split = 9
#リサイズを指定
size = (vertical_split * 200, horizonal_split * 200)
img = cv2.resize(img, size)
#リストの初期化
split_img = []
#縦と横に分割
[split_img.extend(np.hsplit(img, horizonal_split)) for img in np.vsplit(img, vertical_split)]
#分割した画像群を横に配列
img_list = [split_img[i] for i in range(len(split_img))]
merge_img = cv2.hconcat(img_list)
#画像を保存
cv2.imwrite('merge_img.jpg', merge_img)
##実行結果
対象画像:sudoku_wiki.png
実行結果:merge_img.jpg
見づらいので、拡大してみてください。。。
更なる改善点
・数字との境界線を消すと見やすくなる
→直線検出をし、白塗り
・数字の画像からで文字列化
→MNIST(機械学習)を取り入れる
それぞれ取り組んだんですが、あまり良くない精度だったので、
改善でき次第、載せられたらいいかな。