1

我目前正计划将我的图像分成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还是新手,所以不习惯处理未处理的异常错误。

谢谢

4

2 回答 2

1

听起来好像 split 期望向量Mat中有三个实例。rgb但是你只准备了它来容纳三件物品——它实际上是空的。

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

于 2013-03-16T18:56:47.603 回答
0

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

于 2016-05-03T21:33:27.760 回答