我目前正计划将我的图像分成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,所以我不习惯处理未处理的异常错误。
谢谢
听起来好像split期望在rgb
向量中有三个Mat
实例。但是你只准备了三个条目——它实际上是空的。
尝试添加三个元素到向量,然后再运行。
虽然这是一个老问题,但我想分享对我有效的解决方案。我用Mat channels[3];
代替vector<Mat> rgb(3);
。我意识到有一些错误的使用矢量时,我不能使用分割,甚至在一个图像加载imread。不幸的是,我不能解释为什么这个改变是有效的,但如果有人可以,那将是伟大的。