opencv触发了指定给RtlValidateHeap的断点无效地址 我在Visual Studio 2013中用C++和OpenCV 2.49编写了一些代码: cv::Mat mask = Mat::zeros(tmp.size(), CV_8UC1);
修改掩码,使某些元素为零,某些元素为255opencv触发了指定给RtlValidateHeap的断点无效地址 我在Visual Studio 2013中用C++和OpenCV 2.49编写了一些代码: cv::Mat mask = Mat::zeros(tmp.size(), CV_8UC1);,opencv,dll,vector,breakpoints,Opencv,Dll,Vector,Breakpoints,修改掩码,使某些元素为零,某些元素为255 cv::vector<cv::vector<cv::Point> > contours; cv::vector<cv::Vec4i> hierarchy; cv:findContours(mask, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE); cv::imshow("Mask", mask); cv::矢量轮廓; 向量层次; cv:findContours(遮罩、
cv::vector<cv::vector<cv::Point> > contours;
cv::vector<cv::Vec4i> hierarchy;
cv:findContours(mask, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);
cv::imshow("Mask", mask);
cv::矢量轮廓;
向量层次;
cv:findContours(遮罩、轮廓、cv_-RETR_-CCOMP、cv_-CHAIN_-About_-NONE);
cv::imshow(“面具”,面具);
方法结束时,出现以下错误:
为RtlValidateHeap(004D0000、02EBD9D8)指定的地址无效
Project.exe已触发断点
我搜索了stackoverflow和其他平台,但没有找到答案
我将正确的opencv路径添加到“path”环境变量:C:\opencv\build\x86\vc12\bin
以及项目配置:
C:\opencv\build\x86\vc12\lib
如果使用opencv api中的merge/split,则会导致相同的错误,但在这种情况下,可以在进入方法之前分配向量。然后它就起作用了。在这种情况下,之前不可能分配向量,因为我现在不知道大小
我认为问题在于opencv分配的内存不在正确的堆中,但我检查了所有dll和路径。你还有别的想法吗
提前谢谢
编辑:
我用一个新下载的opencv替换了opencv文件夹,它工作正常,别问我为什么 cv::vector声明有效吗?您应该尝试std::vector而不是它们。 根据给定的代码,很难确定是什么导致了故障。你能提供更多的细节吗 还请注意,此“函数在提取轮廓时修改图像” 您还应检查以下属性:
请确保不要混合调试/发布DLL。它们不是混合的。。。只有d用于调试(opencv_imgproc249d.lib)您还有其他ideathx。。。所有这些都是正确的!我替换了opencv文件夹,它工作了!