5

私はpictureBox->Image(Windowsフォーム)を使用してcv :: Mat画像(openCV)を表示しようとしています。画像をファイルとして保存せずにこれを実行したい(100ミリ秒ごとに画像をリセットしたいため)。ここでそのトピックを見つけました:Windowsフォームアプリケーションでcv :: Matを表示する方法は?

このソリューションを使用すると、画像は白のみのように見えます。間違ったPixelFormatを使用したと思います。では、必要なPixelFormatをどのように把握するのでしょうか。それについての情報を得るためにcv::Matでメソッドを見たことがありません。または、これは、このcv :: Matを作成するために使用する画像ソースに依存しますか?これまでのところありがとう:)

ここで私はスクリーンを取りました。その完全に白ではありません。だから私はいくつかの色の情報があると思います。しかし、多分私は間違っています。 画面

4

2 に答える 2

3

cv :: Mat.depth()は、ピクセルタイプを返します。8ビット符号なしなどのCV_8Uおよびcv::Mat.channels()は、チャネル数を返します。通常、カラー画像の場合は3です。

「通常の画像」の場合、opencvは通常8ビットのBGR色順を使用します。これは、WindowsビットマップまたはほとんどのWindowsライブラリに直接マップする必要があります。

したがって、おそらくsystem.drawing.imaging.pixelformat.Format24bppRgbが必要です。使用する順序(RGBまたはBGR)はわかりませんが、opencv cv :: cvtColor()とCV_BGR2RGBを使用してRGBに変換できます。

于 2012-06-01T17:17:26.923 に答える
1

助けてくれてありがとう!問題は別のものでした。画像オブジェクトにメモリを割り当てませんでした。したがって、実際に表示するものは何もありませんでした。cv::Mat img;headerFileとimg = new cv::Mat(120,160,0);Constructor(ocvcamimg Class)で使用すると、機能するようになりました。(をocvcamimg->captureCamMatImg()返しますimg)。

于 2012-06-03T15:20:39.140 に答える