gpt4 book ai didi

opencv - C++ OpenCV 2.4.0 findContours 与 Kinect 深度流崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:29 25 4
gpt4 key购买 nike

遇到 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 是单 channel 图像并且它不是空白的(即,有大约 500 多个点)。但我想知道这是否是与堆或线程相关的问题,因为我听说 findcontours 实际上可以修改输入垫?

在这一点上,我将尝试使用刚刚发布的 OpenCV 2.4.1,尽管我没有看到任何指向修复此问题的已修复错误。

非常感谢任何想法...

最佳答案

问题原来是编译器标志将程序的堆栈使用量限制为 10MB(10,000,000 字节)。不幸的是,这对于我正在捕获的 Kinect 视频来说还不够。删除编译器标志后,findContours 现在可以编译并正常工作!

我使用的是 VC++ 2010,编译器标志位于项目属性->链接器->系统下。这两个字段是:“Stack Reserve Size”“Stack Commit Size”

清除它们并重新编译后,该项目运行得很漂亮!

关于opencv - C++ OpenCV 2.4.0 findContours 与 Kinect 深度流崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com