今年もiOSDCのネットワークスタッフに参加してきました。
主に事前準備と、準備日の構築、最終日の撤収をやりました。
開催期間のうち、平日は全く会場にいなかったんですが、あとから見せてもらったヒートマップを見てテンションが上ったので、動画化することにしました。
ついでにWi-Fi パスワードの "iwillblog" も回収するぞ💪
#iosdc 恒例のハイタッチお見送りです。
— iOSDC (@iosdcjp) 2019年9月7日
懇親会参加される方はまだお楽しみください。
帰宅される方は、お気をつけて!(Wifiのパスワードを思い出してくださいね!) pic.twitter.com/6RSLP7WqA5
ヒートマップ画像はサーバ班のメンバーが用意してくれました。
画面スクショなので、画像内のヒートマップ部分のサイズが異なることがあり、このまま動画化すると目がつらいことに…
画像を切り抜く
矩形抽出して~なども考えたんですが、画像内の矩形・直線の多さ的にあまりうまくいく気がしなかったので、地道にいきました。
- ヘッダ部分をざっくり切り取る
- グレースケールにする
- 画像の縦横それぞれの真ん中辺りで、端からピクセルを順に見ていき、閾値よりも黒い部分に当たったらそこを端とする
- 3で求めた端の部分でクロップ
- クロップ後の画像サイズが小さすぎたり大きすぎたりしたら、閾値を変更して3からやりなおし
- 横幅720にリサイズ
これでどうにか横幅720、縦幅 515~530くらいの画像を切り抜けました。
before
after
クライアント数
クライアント数はヘッダの部分に書いてあり、クロップ処理で切り抜かれてしまうので画像内に再度書き込むことに。
ついでにクライアント数を書き出したいという話もあったので、OCRすることにしました。
OCRで読む
クライアント数の書いてある部分は位置がずれないので、その部分を切り抜いてOCRで読みました。
OCRはTesseractを使用。
$ sudo add-apt-repository ppa:alex-p/tesseract-ocr $ sudo apt-get update $ sudo apt install tesseract-ocr $ sudo apt install libtesseract-dev $ tesseract -v tesseract 4.0.0 leptonica-1.78.0 libgif 5.1.4 : libjpeg 6b (libjpeg-turbo 1.5.2) : libpng 1.6.37 : libtiff 4.0.10 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0 Found AVX2 Found AVX Found SSE
さっそく試してみると、444
という数字が何故か読めず、読み取り対象を数字に絞ったりできないか検索していましたが、4.0以降は無理とのこと。
そのまま調べていると tesseract_layout
を設定している場合が多いなと気づいたので試してみると改善。
改善後の誤判定はこんな感じ。
failed (id: 77 , result: n ) failed (id: 83 , result: n ) failed (id: 166 , result: A417 ) failed (id: 1011 , result: S57 ) failed (id: 1016 , result: S57 ) failed (id: 1157 , result: 744, ) failed (id: 1158 , result: 744, ) failed (id: 1172 , result: 744, ) failed (id: 1221 , result: 744, ) failed (id: 1222 , result: 744, ) failed (id: 1647 , result: 474, ) failed (id: 1756 , result: n ) failed (id: 1759 , result: n ) failed (id: 2702 , result: 744, ) failed (id: 2719 , result: 744, )
n
は71
、S
・A
・,
が入ってしまっているものはそれを除けばOKでした。
ミス数も少ないので手書きで直してしまいました。
画像に書きこむ
フォントは/usr/share/fonts
にあったものを適当に使用。
動画作成
$ ffmpeg -r 30 -i %04d.png -vcodec libx264 -pix_fmt yuv420p -r 30 headmap_with_clients.mp4
完成🎉
ちょっとプルプルしていますが最初よりは許せる範囲でしょう。
お疲れさまでした!