• ベストアンサー

OpenCVで画像をある角度から見たように変換する

OpenCVを使い、画像をある角度から見たように変換したいと考えています。 しかし、cvGetPerspectiveTransform関数では4つの頂点座標を入力することによって変換行列を作成しているみたいなんですが、角度の概念がなくどうしようか困っています。 私がしたいのは任意の角度からみたように画像を回転させたいのでどうすればいいかわかりません。 言いたいことがうまく伝わらないかもしれませんがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

角度だけで距離は関係ないってことは平行投影? それなら回転と拡大縮小を組み合わせるだけ。 透視投影なら、それ用の関数はないみたいだから、変換行列の公式に値を当てはめる。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • OpenCVを使った画像の切り抜き

    添付画像のように、サイズ(X,Y)の画像があったとします。 その画像のある座標(X',Y')とサイズを指定してできた短形領域を、IplImageとして保存するにはどうすればいいのでしょうか? OpenCVを使ってるのですが、そういった関数はなかったでしょうか? よろしくお願いします。

  • 座標変換

    opencvを用いたプログラムを作成しています。 http://chihara.naist.jp/opencv/?%BC%CD%B1%C6%CA%D1%B4%B9 このHPを参考にして(ほぼこのプログラムだと思ってください)プログラムを作っているのですが、『CvMat* h = cvCreateMat( 3, 3, CV_64FC1 );』のことで教えてください。 画像のaとbを座標変換した後この変換を行ったh行列の値を使用して、ある点(X,Y)をある点の(x,y)に変換する方法をご存じではないでしょうか? opencvの関数などでもhが使えるのであれば教えてください。 伝わりにくくてごめんなさい。

  • 透視投影された平面を正面から見たように変換したい

    透視投影で撮影された平面を、正面から撮影したように投影変換する処理を教えてください。 または、射影ひずみの補正といわれるものでしょうか? 私なりにいろいろと調べまして、 「画像の平面内の四頂点の座標を求めることができれば、平面の傾きを求めることができる。」 というところまでたどり着きまして、平面の角度を求めるところまではいきました。 しかし、その後の行列変換がわかりません。 単に回転であれば、 1    0    0 0 cosθ -sinθ 0 sinθ cosθ cosθ 0 sinθ 0   1    0 -sinθ 0 cosθ をかければよいかと思っていましたが、奥行きの収縮などの関係がわかりません。 どの様な行列をかければ求めることができるのか教えてください。 このような研究をしていますが、行列は苦手なので、簡単な質問でしたらすみません。

  • OpenCV処理画像をpictureBoxへ。

    VC++にて画像処理を行っています。 OpenCVのライブラリを使って画像処理をしようと考えているのですが、 処理した画像がMFCで作成したpitureBoxに表示の仕方が分かりません。 調べていくうちに、 「IplImage形式の画像を直接ウィンドウに描画することは出来ないので、 画像をDIBセクション形式に変換してWindows固有の描画処理を行うといい。」 ということが分かり、DIBセクション形式への変換には、IPLを入手し、 「iplConvertToDIB()関数」を使うということが分かりました。 このiplConvertToDIB()関数をつかって画像表示の方法を教えてはいただけないでしょうか?サンプルのソースなどありましたらよろしくお願いいたします。

  • opencvのシーケンスについて。

    opencvのシーケンスについて。 opencvのシーケンスとは。 opencvを使っていると、よくシーケンスという言葉に遭遇します。本やネットで調べましたが、どんなものなのかがよく分かりません。 メモリストレージ・オブジェクト等と一緒に出てくるのですが、これらもなかなか理解しがたいです… 例えばCvFindCountorという画像内のn個の辺を持つ輪郭を調べるという関数がありますが、これに関する情報が引数として渡したシーケンスに保存されているようだ。というのは何となく感じとったのですが、この中の座標等を引き出すにはどうしたらいいのでしょうか。 どなたか分かりやすくご教授頂けないでしょうか。 また、分かりやすいサイトや本もご存知であれば教えて下さい。

  • opencvによる画像処理。

    opencvによる画像処理。 今opencvを使った画像処理をしているのですが、これって普通のプログラム中に関数みたいな感じで使う事って出来ないのでしょうか? 例えば、Cで車両を制御するプログラムを作ってる場合に、車両が何mm進んだ時点で車両に取り付けたカメラを使って、画像処理を行う。みたいな処理をしたいです。 でもopencvのmain文って、引数が二つあってそれをどう渡せばいいのかよく分かりません。 素人なので分かりずらくて申し訳ありません。

  • 角度の単位変換

    三角形の角度をTANにて計算したのですが、高さ÷底辺でθを出し、実際はATAN(θ)*180/PI()のエクセルに入っている方法にて頂点の角度が16.63616という数字になりました。これは16.63616度ということだと思うのでがあってますかね。これを図面にしたいため度分秒に直したいのですが何か変換する無償ソフトがありますでしょうか?一応ネットで当たっては見たのですがAUTOCAD等には入っているらしいですが、持ってません。エクセルでできればよいのですがわからないし、ラジアンなんとかというわからない言葉も出てきて。関数電卓もないし。おたすけを!

  • opencvで二つの画像のANDをとる関数ってありますか?ありましたら

    opencvで二つの画像のANDをとる関数ってありますか?ありましたら教えてください。よろしくお願いします。

  • OpenCV1.1、OpenCV2.3の使い方

    これまでOpenCV1.1を使っていたのですが類似画像検索をするのにHOG特徴量を用いたいと思い、HOG特徴量を求める関数のあるOpenCV2.3もインストールしました。 その際、OpenCV1.1はアンインストールして、最初からプログラムを書き換えないとダメなのでしょうか?ためしに今まで書いていたプログラムにOpenCV2.3のライブラリをインクルードしてみると、それだけで100個以上のビルドエラーが発生してしまいました。CとC++の違いによるものなのでしょうか? あとPathの設定などもOpenCV1.1のときのものを残したまま、OpenCV2.3用のPathを追加しただけなのですが、大丈夫なのでしょうか? 解決方法がわかる方がいらっしゃれば、教えて下さい。よろしくお願いいたします。

  • 正三角形の頂点の座標を求めるプログラムについて

    先日、C++言語を使った学校の授業の課題で次のような問題が出されました。 「ある正三角形の2点の頂点の座標を入力し、残り1点の頂点の座標を計算するプログラムを作成しなさい。ただし、正三角形の3辺が同じ長さであるという特性を用いて作成しなさい。座標の有効桁数は小数点以下3桁とする。」 僕は最初、回転行列を用いて計算を行うプログラムを作成して提出したのですが、再提出をくらいました。どうやら、回転行列や方程式は使ってはいけないようです。 それならば、一体どのようなコードを作成すればよいのでしょう?皆さんの力を貸して下さい。