OpenCV:如何将CV_8UC1 mat转换为CV_8UC3

Gra*_*mer 12 opencv

如何用OpenCV将CV_8UC1 Mat转换成CV_8UC3?

Mat dst;
Mat src(height, width, CV_8UC1, (unsigned char*) captureClient->data());
src.convertTo(dst, CV_8UC3);
Run Code Online (Sandbox Code Playgroud)

但是dst.channels()= 1

Kev*_*vin 28

我发现最好的方法是:

cvtColor(src, dst, COLOR_GRAY2RGB);
Run Code Online (Sandbox Code Playgroud)

图像看起来与灰度CV_8UC1时的图像相同,但它将是CV_8UC3类型的3通道图像.


Ham*_*mer 3

来自ConvertTo 的文档

\n\n
\n
\n

void Mat::convertTo(Mat& m, int rtype, 双 alpha=1, 双 beta=0) const

\n\n

rtype \xe2\x80\x93 所需的目标矩阵类型,或者更确切地说,深度(因为通道数与源通道数相同)。如果 rtype 为负,则目标矩阵将具有与源矩阵相同的类型。

\n
\n
\n\n

您想要为要创建的 3 个通道中的每一个通道创建一个矩阵,然后使用合并功能。查看此问题的答案

\n