私は Opencv を使用しており、cv::frame1 と cv::frame2 の 2 つのフレームがあります。それらのタイプを確認すると、次のようになります。
frame1.type() is 16
frame2.type() is 21
私の質問は、データを失うことなくフレーム 2 のタイプを 16 に変更するにはどうすればよいですか?? frame2.convertTo() を試してみましたが、うまくいきませんでした。
何か案が ?
私が理解していることから、タイプ 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);