OpenCV で CV_8UC1 Mat を CV_8UC3 に変換するには?
Mat dst;
Mat src(height, width, CV_8UC1, (unsigned char*) captureClient->data());
src.convertTo(dst, CV_8UC3);
しかし dst.channels() = 1
OpenCV で CV_8UC1 Mat を CV_8UC3 に変換するには?
Mat dst;
Mat src(height, width, CV_8UC1, (unsigned char*) captureClient->data());
src.convertTo(dst, CV_8UC3);
しかし dst.channels() = 1
これを行うための最良の方法は次のとおりです。
cvtColor(src, dst, COLOR_GRAY2RGB);
画像はグレースケールCV_8UC1のときと同じように見えますが、タイプCV_8UC3の3チャンネル画像になります。
規則では、 typeCV_8UC3の場合、ピクセル値の範囲は から0まで255、 typeの場合CV_32FC3は から0.0まで1.0です。255.0したがって、 の代わりに の倍率を使用する必要があります1.0。
Mat::convertTo(newImage, CV_32FC1, 255.0);