遇到 opencv 2.4.0 findContours 函数不断崩溃的问题。不幸的是,我很难确定这个问题。希望有人遇到类似的问题。
我正在使用 Microsoft K4W SDK 1.5 从 Kinect 传感器捕获深度流,将其复制到 OpenCV Mat,然后通过 cvtColor 和阈值将其转换为 8UC1 图像。我运行 countNonZero 只是为了确保图像在传递给 findContours 之前不是空白的。但即使是最简单的 findcountours 实现也会崩溃。
这是我的基本代码:
rawdepth = Mat(Size(640,480),CV_8UC4);
thresh = Mat::zeros(640,480,CV_8UC1);
// storage for contours
vector<vector<Point>> contours;
cvtColor(rawdepth,thresh,CV_RGB2GRAY);
threshold(thresh,thresh,0,255,THRESH_BINARY);
if(countNonZero(thresh) > 100 ) {
// This crashes
findContours(thresh,contours,RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
}
我确实验证了传递给 findcontours 的实际 Mat 是单通道图像并且它不是空白的(即,有大约 500 多个点)。但我想知道这是否是与堆或线程相关的问题,因为我听说 findcontours 实际上可以修改输入 Mat?
在这一点上,我将尝试使用刚刚发布的 OpenCV 2.4.1,尽管我没有看到任何指向修复此问题的已修复错误。
任何想法都非常感谢...