将1通道图像转换为3通道

kes*_*vdv 4 opencv

我试图在OpenCV 2.3.1中将1通道图像(16位)转换为3通道图像.我在使用合并功能时遇到问题并收到以下错误:

    Mat temp, tmp2;
    Mat hud;
    tmp2 = cv_ptr->image;
    tmp2.convertTo(temp, CV_16UC1);
    temp = temp.t();
    cv::flip(temp, temp, 1);
    resize(temp, temp, Size(320, 240));
    merge(temp, 3, hud);
Run Code Online (Sandbox Code Playgroud)

错误:没有匹配函数来调用'merge(cv :: Mat&,int,cv :: Mat&)'

谁能帮我这个?提前致谢!

vol*_*ing 13

如果temp是要转换为3个通道的1通道矩阵,则以下内容将起作用:

cv::Mat out;
cv::Mat in[] = {temp, temp, temp};
cv::merge(in, 3, out);
Run Code Online (Sandbox Code Playgroud)

查看文档以获取更多信息.


fra*_*xel 2

看起来你的使用方式不太merge正确。您需要指定所有要“合并”的通道。我认为你想要一个三通道框架,所有通道都相同,在 Python 中我会这样写:

cv.Merge(temp, temp, temp, None, hud)
Run Code Online (Sandbox Code Playgroud)

来自 opencv文档

cvMerge:由多个单通道数组组成多通道数组或将单个通道插入数组中。