0

opencv を使用してビデオを読み込んで表示したい。Direct-show で録画しました。ビデオには UYVY (4:2:2) コーデックがあります。opencv はその形式を読み取れないため、コーデックを RGB カラー モデルに変換したいです。ffmpeg について読んで、これを行うことが可能かどうかを知るには?そうでない場合は、提案をいただければ幸いです。

4

1 に答える 1

1

前に説明したように、 OpenCVはUYVYを含むYUVのいくつかの形式を読み取ることができます(FFmpeg / GStreamerのおかげで)。したがってcv::Mat、カメラから取得したものは、OpenCVがデフォルトで使用するBGR色空間にすでに変換されていると思います。

以前のプログラムを変更して、ビデオの最初のフレームをPNGとして保存しました。

cv::Mat frame;
if (!cap.read(frame)) 
{
    return -1;
}            

cv::imwrite("mat.png", frame);

for(;;)
{
 // ...

そして、画像は完璧です。mat.pngでコマンドfileを実行すると、次のことがわかります。

mat.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced

より正確なテストは、全体frame.data()をディスクにダンプし、イメージエディタで開くことです。その場合、RチャネルとBチャネルが切り替わることに注意してください。

于 2013-02-13T21:38:10.977 に答える