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