えたこと、その他を雑記するためのブログです。github.com動くやつ↓https://github.com/saji-spoon/OpenCV-Siv3DSample/releases/tag/1.00以下、問題設定とかSiv3Dと合わせた表示結果とかについて説明するのでOpenCVの画像処理そのものの深いところの説明はあまりしません。アンケート用紙の枠検出(Form-Siv3D(August2016v2)プロジェクト)こんな感じ↓のアンケート用紙からOpenCVで入力枠を検出したい個人的にはこの記事↓めっちゃ参考になった...画像から四角いものを検出する、ってときにだいたい必要なものが解説されてる気がするdev.classmethod.jp画像から四角いものを検出するには結構色々手順がいるけども、とりあえず「輪郭検出」→「ゴミ取り」(一定以下の面積の輪郭を取り除く)というところを考えると、「一定以下」ってどれくらいの数値ならいいのかがよくわからない。いうことで、スライダーで値を調整しながら、指定された値より面積が大きい輪郭しか表示しないようにSiv3Dで表示させてみた。デフォルトだとこの状態で、アンケート用紙に書かれた文字まで輪郭検出してしまっている。スライダーを少し右に動かすと、文字から検出した輪郭は表示されなくなる。5000を超えたあたりで一番小さい入力欄も表示されなくなってしまうこともわかる。ゴミ取っただけだとタイトルとかも入ってしまっているけど、ここから切り出したい画像だけクリックで指定...とかも割と簡単に発展できそう。アンケート用紙のスキュー補正(SkewCorrect-Siv3D(August2016v2)プロジェクト)またアンケート用紙。白紙のと、記入済みだけど曲がってしまっているのがある。スキャナで取るとき下手くそだと曲がりますね。アンケート用紙には一番外側にふっとい枠線がある。これを検出して曲がっているのを補正できる...はず。スキャンしたときとか曲がってしまったり歪んでしまったりして結果画像がズレてるのをスキューと言います。これを直すのでスキュー補正。これの補正枠を基準として、これに合わせて直す。曲がってしまってる記入済みの画像。補正枠は検出できてるので、これを白紙画像の補正枠と合わせるように変形すればいい。輪郭検出と直線近似で補正枠の四角形はとれた上で、cv::getPerspectiveTransformcv::warpPerspectiveの2つの関数を使うと、一方を基準として、もう一方をそこにあわせる、みたいな画像の変形ができる(ふんわり)。正確にはcv::getPerspectiveTransformで、4点から4点への変換行列を作り、cv::warpPerspectiveで作った行列を用いて実際に画像変形を行う。今回は単純に歪んでる方の補正枠を正しい補正枠に合わせるように変形しているだけといえばそれだけ。Siv3D単体でも結構な加工とか画像処理(輪郭検出すら)できるのでOpenCVだけでできるのはなんじゃろなーと考えてたけど、自分の知ってる範囲ではcv::warpPerspectiveかな...と。予想以上にきれいに補正できて(画像がもともときれいなのはあるけど)びっくり。真っ直ぐにした画像を予め用意してるとかそういうわけではないぞ!まとめやっぱり値を調整しつつリアルタイムで見れるのとか、座標クリックとかで操作しつつ次の処理を決めたりとかするにはSiv3Dの機能が強力。簡単な操作で大量の画像の切り出しとか加工を自動化できると色々役に立つかも。えたこと、その他を雑記するためのブログです。(1)月別アーカイブリンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!milk_spoonさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。