gpt4 book ai didi

opencv - opencv已触发为RtlValidateHeap指定的断点无效地址

转载 作者:行者123 更新时间:2023-12-02 17:49:46 26 4
gpt4 key购买 nike

我在Visual Studio 2013中用C++和OpenCV 2.49编写了一些代码:

cv::Mat mask = Mat::zeros(tmp.size(), CV_8UC1);

修改掩码,使某些元素为零,而某些元素为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);

该方法结束时,出现以下错误:

指定给RtlValidateHeap(004D0000,02EBD9D8)的地址无效
Project.exe已触发断点。

我在stackoverflow和其他平台上进行了搜索,但找不到答案!

我向“路径”环境变量中添加了正确的opencv路径:C:\ opencv \ build \ x86 \ vc12 \ bin
以及项目配置:
C:\ opencv \ build \ x86 \ vc12 \ lib

如果我使用来自opencv api的merge / split,则会导致相同的错误,但是在这种情况下,可以在进入方法之前分配 vector 。然后就可以了。在这种情况下,不可能分配 vector ,因为我现在没有大小。

我认为问题是opencv分配了内存,并且不在正确的堆中,但是我检查了所有dll和路径。你还有其他建议吗?

提前致谢!

编辑:
我用新下载的opencv替换了opencv文件夹,它可以工作,不要问我为什么!

最佳答案

cv::vector声明有效吗?您应该尝试使用std::vector而不是它们。
根据给定的代码,很难确定导致问题的原因。您能否提供更多详细信息?

还请注意,此“功能在提取轮廓时会修改图像”。

您还应该检查以下属性:

  • 右键单击项目
  • 属性-配置属性-常规:将Plattform Toolset设置为Visual Studio 2013(v120)
  • 配置属性-C / C++-代码生成-设置运行时库:
    用于调试版本或多线程的多线程调试DLL(/ MDd)
    用于发布版本
  • 的DLL(/ MD)

    关于opencv - opencv已触发为RtlValidateHeap指定的断点无效地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133340/

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