質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

2回答

3427閲覧

opencv 傾き補正

matsuda2

総合スコア29

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

1クリップ

投稿2021/05/28 00:41

編集2021/05/28 00:55

イメージ説明

環境

windows10、visual studio 2019、vc++、opencv-4.5.2

やりたいこと

スキャナーから取得した画像をopencvで傾き補正して水平にしたいです。
cv::cvtColor(*img, grey, cv::ColorConversionCodes::COLOR_BGR2GRAY);
cv::threshold(grey, val2, 250.0, 255.0, cv::ThresholdTypes::THRESH_BINARY);
cv::bitwise_not(val2, ret);
を実行して、添付の画像のような背景が黒、物体が白の画像データを取得できたのですが、
この画像をどうすれば、傾き補正して水平な画像データを取得すれば良いか教えていただきたいです。

まずは、4つの頂点を取得する方法を知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

使えるか否かは

傾き補正

の要求精度次第となりそうですが,

(強度が一定以上のエッジ点群についての)輝度勾配方向を集計してやれば,回転角度を推定することができるかと思います.
(輝度勾配方向のヒストグラムみたいなのを作ってその度数から角度を見るとか)

そしたら後は(cv::warpAffine とか cv::remap とかを用いて)回転変換してやれば良い.

投稿2021/05/28 01:30

fana

総合スコア11708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/05/28 03:04

この形状であれば,主軸の向きとかでもそこそこやれるかも?
guest

0

ベストアンサー

アフィン変換で良いのではないでしょうか.
cv::getAffineTransform, cv::warpAffine, cv::transform あたりを調べてみれば良いでしょう.


(↑の話を受けて,質問内容が追加されたのでしょうか?)

まずは、4つの頂点を取得する方法を知りたいです。

白い塊が,長方形丸出しな形っぽいですし,且つ,形状の欠け等がほぼ無い形できれいに取れているみたいですから,

  • contour検出 → minAreaRect の流れで,外接矩形の頂点を得る
  • 4辺の直線を検出 → それらの交点として頂点を得る
  • 真っ先にCorner検出器を試してみる

等,簡単な方法を試してみればよいのではないでしょうか.

投稿2021/05/28 00:47

編集2021/05/28 01:20
fana

総合スコア11708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問