Introduction
OpenCVSharp を使って、Webカメラから取得した YUV 形式のフレームを BGR 形式に変換する際の疑問について。
OpenCV で利用される cv::cvtColor を使って YUV 形式を BGR 形式の変換する際、指定できるフラグは下記になる。
1 | //YUV 4:2:0 formats family |
が、末尾の _NV12 とか _YVYU は何?って話。
What’s that?
簡単に言えば、YUV 形式における細部の詳細。
変換元の YUV 形式のフレームが実際に何であるかを明示する必要がある。
詳細は
が詳しい。
以降は OpenCV で定義されている名称に絞った一覧。
格納方式
名前 | 概要 |
---|---|
Packed format (Interleaved) | Y、U、V を単一配列に格納。よくある RGB や BGR 形式と同じ並び |
Planer format | Y、U、V をそれぞれ異なる配列に格納 |
Semi-planar format | Y のみ異なる配列に格納し、U、V を単一配列に格納 |
フォーマット名
OpenCVSharp なら VideoCapture.FourCC プロパティを見れば、現在のフォーマットがわかる。
名前 | 格納方式 | YUV 比率 | 別名 |
---|---|---|---|
NV12 | Semi-planar format | 4:2:0 | |
NV21 | Semi-planar format | 4:2:0 | |
YV12 | Planer format | 4:2:0 | |
IYUV | Planer format | 4:2:0 | IYUV |
I420 | Planer format | 4:2:0 | I420 |
UYVY | Packed format | 4:2:2 | Y422、UYNV |
Y422 | Packed format | 4:2:2 | UYVY、UYNV |
UYNV | Packed format | 4:2:2 | UYVY、Y422 |
YVYU | Packed format | 4:2:2 | |
YUY2 | Packed format | 4:2:2 | V422、YUYV、YUNV |
YUYV | Packed format | 4:2:2 | YUY2、V422、YUNV |
YUNV | Packed format | 4:2:2 | YUY2、V422、YUYV |
Wrap up
- YUV 比率が同じだからと言って適当に指定するとおかしな結果になる