拆分图像会导致未处理的异常错误

时间:2013-03-16 18:53:11

标签: c++ opencv image-processing split

我目前正计划将我的图像分成3个通道,因此我可以获取图像的RGB值来绘制散点图,因此我可以使用正态分布来计算协方差矩阵,均值等。 然后计算背景点和实际图像之间的距离以分割图像。

现在,在我的第一个任务中,我编写了以下代码。

    VideoCapture cam(0);
//int id=0;
Mat image, Rch,Gch,Bch;
vector<Mat> rgb(3);         //RGB is a vector of 3 matrices

namedWindow("window");
while(1)
{
    cam>>image;
split(image,rgb);
    Bch = rgb[0];
    Gch = rgb[1];
    Rch = rgb[2];

但是一旦它到达split函数,我逐步执行它,它会导致未处理的异常错误。访问冲突写入位置0xfeeefeee

我还是opencv的新手,因此不习惯处理未处理的异常错误。

感谢

2 个答案:

答案 0 :(得分:1)

听起来好像split需要在Mat向量中有三个rgb个实例。 但是你只准备好容纳三件物品 - 实际上是空的。

尝试向矢量添加三个项目并再次运行。

答案 1 :(得分:0)

虽然这是一个老问题,但我想分享对我有用的解决方案。而不是vector<Mat> rgb(3);我使用了Mat channels[3];。我意识到使用矢量时出现了问题,即使在加载imread的图像上我也无法使用拆分。不幸的是,我无法解释为什么这种改变有效,但如果有人能做到这一点会很棒。