我目前正计划将我的图像分成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的新手,因此不习惯处理未处理的异常错误。
感谢
答案 0 :(得分:1)
听起来好像split需要在Mat
向量中有三个rgb
个实例。
但是你只准备好容纳三件物品 - 实际上是空的。
尝试向矢量添加三个项目并再次运行。
答案 1 :(得分:0)
虽然这是一个老问题,但我想分享对我有用的解决方案。而不是vector<Mat> rgb(3);
我使用了Mat channels[3];
。我意识到使用矢量时出现了问题,即使在加载imread的图像上我也无法使用拆分。不幸的是,我无法解释为什么这种改变有效,但如果有人能做到这一点会很棒。