gpt4 book ai didi

Opencv contour.exe 中未处理的异常

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:51 36 4
gpt4 key购买 nike

我的代码在 OpenCV 中运行良好,直到我想找到等高线:

findContours(src, contours,hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);

然后我不断收到以下错误:

"Unhandled exception at 0x773e3e28 in Contour.exe: Microsoft C++ exception: cv::Exception at memory location 0x002ff3ac.."

你知道这个错误吗?

我的完整代码如下。

谢谢

Mat src=Mat(100,200,CV_64F),newimg;
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;

for (int i=25;i<80;i++)
for(int j=25;j<80;j++)
src.at<double>(i,j)=1;
imshow("img",src);
waitKey(0);

findContours(src, contours,hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);

最佳答案

从 OpenCV 文档中引用关于 findContours

image – Source, an 8-bit single-channel image. Non-zero pixels are treated as 1’s. Zero pixels remain 0’s, so the image is treated as binary . You can use compare() , inRange() , threshold() , adaptiveThreshold() , Canny() , and others to create a binary image out of a grayscale or color one. The function modifies the image while extracting the contours. If mode equals to CV_RETR_CCOMP or CV_RETR_FLOODFILL, the input can also be a 32-bit integer image of labels (CV_32SC1).

您可以调整代码,将 CV_64FC1 图像转换为 CV_8UC1,例如:

...
Mat1b img8u;
src.convertTo(img8u, CV_8U);

vector<vector<Point>> contours;
vector<Vec4i> hierarchy;

findContours(img8u, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);
...

此外,从评论中可以看出您使用的是 Visual Studio 2010,但链接的是使用 msvc11 (Visual Studio 2012) 构建的 OpenCV。

您需要使用 Visual Studio 2012,或使用 msvc10 (Visual Studio 2010) 重新编译 OpenCV。如果您决定升级 VS,您可以直接转到 VS2013(并链接到 vc12),或转到 VS2015(但您还需要重新编译 OpenCV)。

关于Opencv contour.exe 中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555791/

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