Findcontours() 运行时错误
Findcontours() run-time error
本文关键字:运行时错误 Findcontours 更新时间:2023-10-16
我正在使用这样的函数;
Mat large = imread(path+name);
Mat rgb;
if (large.rows > 2500 || large.cols > 1250)
{
pyrDown(large, rgb);
}
else
{
rgb = large.clone();
}
cv::Mat smallx;
cvtColor(rgb, smallx, CV_BGR2GRAY);
Mat grad,connected,bw;
Mat morphKernel = getStructuringElement(MORPH_ELLIPSE, Size(3, 3));
cv::morphologyEx(smallx, grad, MORPH_GRADIENT, morphKernel);
cv::threshold(grad, bw, 100, 255, THRESH_BINARY + THRESH_OTSU);
morphKernel = getStructuringElement(MORPH_RECT, Size(9, 1));
cv::morphologyEx(bw, connected, MORPH_CLOSE, morphKernel);
Mat mask = Mat::zeros(bw.size(), CV_8UC1);
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
cv::findContours(connected, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
当函数返回时,一些输入图像会提示异常,它会将我抛向 xmemory0 类中的"_Mybase::d eallocate(_Ptr, _Count(;" 代码块。我必须捕获此类错误并防止此过程意外暂停
--------------错误详细信息
--------------我尝试了带有 30 个不同输入的代码块,但它在一些图像中给出了错误。 在 findcontours 之后,它抛出了一个异常中断并向我显示此消息。
在 0x74477fb2 (ucrtbase.dll( 中未处理的异常 图像识别器.exe: 0xC0000409: 0xc0000409.
在那个时候,"向量"类在我的视觉工作室中用这些行打开;
~vector() _NOEXCEPT
{ // destroy the object
_Tidy();
}
或以这些行开头的"xmemory"类;
void deallocate(pointer _Ptr, size_type _Count)
{ // deallocate object at _Ptr, ignore size
_Mybase::deallocate(_Ptr, _Count);
}
您的方法找到的计数器数量似乎超过 50000。尽量不要使用幻数。这始终是一种不好的做法。
我尝试OpenCV 2.4.13而不是OpenCV 2.4.12,问题自行解决。这不是算法或逻辑错误。这是一个库错误。
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- C++在使用std::multimap时出现运行时错误的几率很小
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 试图找出为什么我会收到运行时错误?
- 迭代二维矢量时发生运行时错误
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误