代码之家  ›  专栏  ›  技术社区  ›  C.Radford

opencv拆分和合并[复制]

  •  0
  • C.Radford  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我有一个类型的图像 Mat 我试着把它分成单独的波段,这样我就可以分别调整每个波段的像素值。当我编写代码时,这个错误会弹出“调用‘cvsplit’没有匹配的函数”。

    Mat image = imread(file,1);
    Mat rBand, gBand,bBand;
    cvSplit(image, bBand, gBand, rBand, NULL);
    imshow("red", rBand);
    imshow("blue", bBand);
    imshow("green",gBand);
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   C.Radford    7 年前

    如果创建时未声明,mat不允许使用下标运算符。因此,大多数人会创建一个mat来表示其中的频带数,这样就可以对其进行拆分。这意味着 Bands[0],Bands[1],Bands[2] 每一个通道都是灰度的。不获取原始图像则必须使用 merge 功能。

    Mat image = imread(file,1);
    Mat Bands[3],merged;
    split(image, Bands);
    vector<Mat> channels = {Bands[0],Bands[1],Bands[2]};
    merge(channels,merged);
    imshow("red", Bands[2]);
    imshow("blue", Bands[0]);
    imshow("green",Bands[1]);
    imshow("merged",merged);
    
        2
  •  0
  •   Harald Nordgren    7 年前

    如果 cvSplit :

    cv::split