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);