1

私は Opencv を使用しており、cv::frame1 と cv::frame2 の 2 つのフレームがあります。それらのタイプを確認すると、次のようになります。

 frame1.type()  is 16 
frame2.type() is 21

私の質問は、データを失うことなくフレーム 2 のタイプを 16 に変更するにはどうすればよいですか?? frame2.convertTo() を試してみましたが、うまくいきませんでした。

何か案が ?

4

1 に答える 1

1

私が理解していることから、タイプ CV_32FC3 (3 チャネル float) のイメージを CV_8UC3 (3 チャネル unsigned char) に変換したいと考えています。これは、いくつかの情報を失うことなく行うことはできません。最初のケースでは、1 ピクセルあたり 4 バイト、2 番目のケースでは 1 ピクセルあたり 1 バイトであるため、ご理解のとおり、いくらかの損失が発生します。

このコードは、別の型に変換するために使用され、私にとってはうまく機能します:

cv::Mat A = cv::Mat(480, 640, CV_32FC3, CV_RGB(1.0,1.0,1.0));
cv::Mat B;
A.convertTo(B, CV_8UC3);
于 2013-01-09T16:18:17.757 に答える