2012-03-30 17 views
0

処理する前にウェブカメラからCVD imagesを作成する既存のコードベースを使用しています。私の目的は、処理の残りの部分が起こる前に拡張現実感のためにこの画像上でマーカー検出を実行することです。ArUcoを使用してこれを行う予定です。問題は、Arukoがマーカーを検出するためにOpenCV画像を取り込むことです。CVD画像をColor OpenCV画像に変換する

私は、CVD画像の各ピクセルに手動でアクセスし、RGB値を新しいOpenCVイメージに貼り付けることによって、このOpenCVイメージをCVDイメージから手動で作成することを考えています。私はあまりC++での作業に精通していませんが、確かにこれを行うためのより良い方法がありますか?

答えて

2

私はこのようなものを使用します。 myImageの型は、イメージの各ピクセルの3バイトをメモリの連続するバイトに格納する(カスタム)イメージ型で、myImage.data()はそのメモリの先頭を指すポインタです。あなたのCVDイメージ(私が慣れていない)が同様の方法でレイアウトされていれば、同じことができます。

cv::Mat image(rows, cols, CV_8UC3, myImage.data()); 
+1

はい、あなたは間違いなくすべての可能であればコピーを行うことなく画像をラップします。 – aardvarkk

+0

これは私がやりたいこととまったく同じように聞こえる。 CVD画像のドキュメントによると、[]演算子を使って各ピクセルの値を逆参照することはできますが、画像のメモリの開始ブロックを取得する方法はわかりません。上記のコードから、行の幅=画像の幅、cols = height、CV_8UC3は画像フォーマットであると推測していますか?上の関数のドキュメントがありますので、どのような画像フォーマットが適用可能か試してみてください。 – Jkh2

+1

docsのopencv.itseez.comを見て、&image [0,0]で最初の要素のアドレスを見つけてください。 CV_8UC3は符号なし、8ビット(ucharは標準イメージタイプ)、3チャネル(RGB)の略です。 – Sam

関連する問題