2017-02-02 6 views
2

私はかなりしばらくの間、タンゴのために開発されていないが、最近私はタンゴのJava APIの最新バージョンに更新され、私はTangoImageBufferオブジェクトが今format == 17を持っていることに気づいた、である:タンゴの画像フォーマットYCRCB_420_SP

public static final int YCRCB_420_SP = 17; 

私が覚えている限り、これまでのバージョンでは、の代わりにYV12でした。

public static final int YV12 = 842094169; 

私はBGRに変換するためにOpenCVのcvtColor機能を適用するために使用:

cv::Mat imageBgr(720, 1080, CV_8UC3); 
cv::Mat image(3 * 720/2, 1280, CV_8UC1); 
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV12); 

は、OpenCVのを使用してYCRCB_420_SPを読むことが方法は何ですか?私はCOLOR_YCrCb2BGRと同様のモードを試しましたが、動作しません。

どうやら、COLOR_YUV2RGB_NV12はまだ動作し、やや合理的な結果を生成します。

YCRCB_420_SP read as NV12

をしかし、色はオフになっているようにそれは感じていると、すべてが非常に黄色っぽい見えます。それとも、私は妄想していますか?

私の質問は、YCRCB_420_SPの画像を読み取る正しい方法は何ですか? OpenCV cv::COLOR_YUV2RGB_NV12を適用するのは正しいですか?

EDIT:

@fireantが示唆したように、私はNV21を使用してみましたが、これは明らかに動作しません:

NV21

NV12は、元の色にかなり近づいていました。コードは

cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21); 
+1

私は同様の問題にこだわっている...私が働いている:

だけの推測では、このようになりますあなたの代わりにBGRのRGB、BGRとNV21後の画像を使用しているようですTango ** Unity ** SDKと、カメラデータを取得するためのコールバック(TangoUnityImageData)は、まだYV12フレームを提供していると言います。私はカポラレスのリリースです。しかし、これらのフレームは期待どおりに機能していません...あなたのショーのように変更されている可能性があり、TangoUnity SDKで誤ってラベル付けされています。 https://developers.google.com/tango/apis/unity/reference/class/tango/tango-enums#class_tango_1_1_tango_enums_1ae177f114ecf6fd14e2f6152005ecfe0eaf4f398ec3ced7faeea573a7546fc3036 – Jethro

答えて

2

YUV NV21で、NV12ではありません。 OpenCVは画像をthat format to BGR or RGBから変換できます。 enter image description here

+0

「NV21」を試しましたが、うまくいかないようです。新しい編集をご覧ください。 –

+0

BGRではなくRGBを使用してもよろしいですか? COLOR_YUV2RGB_NV21ではなくCOLOR_YUV2BGR_NV21ですか? – fireant

+0

更新された回答をご覧ください。 – fireant

関連する問題