はじめに
最近あまりにも暑すぎて、家にいることが多いですよね。
となると、家で時間をつぶす道具が必要となります。
時間つぶしの道具といえば、発想系クイズ
発想系クイズは、1問1問あたり解くのに時間がかかり
人を選ばないので楽しいです。
なので、低コストでたくさん作ることが出来るクイズを作りましょう。
# 用意するものと手順
ここによくある漢字があります、こいつをバラバラにしていきましょう。
まずは入口です。
import cv2
import numpy as np
import random
from itertools import chain
PIC = 20
raw = cv2.imread("S20160410022001A_000.png",1)
test = cv2.resize(raw , (int(raw.shape[0]*PIC), int(raw.shape[1]*PIC)))
PICで分割する数を決めます。
今回は20なので、20×20に分割されます。
ans = np.zeros(test.shape)
NUM= PIC**2
new_pic = list(range(NUM))
random.shuffle(new_pic)
今回の要となる部分はここです。
ここで20×20のランダムにちりばめられたリストを作ることによって、バラバラにすることを実現させています。
イメージとしては15パズルとかをイメージしていただけると助かります。
この数字が
こうなっているとバラバラですよね。
これを再現していきましょう。
for j in range(NUM):
ax = (j // PIC)
hori = ((j)% PIC)
r_ax = (new_pic[j] // PIC)
r_hori = ((new_pic[j])% PIC)
ans[int(r_ax*test.shape[0]//PIC):(r_ax+1)*test.shape[0]//PIC,r_hori*test.shape[1]//PIC:(r_hori+1)*test.shape[1]//PIC] = \
test[ax*test.shape[0]//PIC:(ax+1)*test.shape[0]//PIC,hori*test.shape[1]//PIC:(hori+1)*test.shape[1]//PIC]
商とあまりで座標決めすることによって
このように並び替えることが出来ます。
img = cv2.resize(ans , (raw.shape[1],raw.shape[0]))
cv2.imwrite("barabara.jpg",img.astype(int))
あとは、**サイズをもとに戻して(1回やらかした)**保存して終了です。
先ほどの密もバラバラですね。疎ですね。
よかった。
あとはPICの数を弄って難易度を調整して遊びましょう。
# 最後に
こうすることによって、簡単にクイズを作ることが出来ます。
皆さんも暇なときに作って遊びましょう!
もっと楽しくできる方法とかあれば教えていただけると幸いです。
実装して遊びます!