Ошибка отладочного утверждения _pFirstBlock == pHead с использованием Opencv

Я использую следующий код для вычитания фона. Я даю ему путь к видео, видео запускается успешно, но в конце оно дает Ошибка отладочного подтверждения.

введите описание изображения здесь

Я использую следующие код в Microsoft Visual Studio, чтобы решить проблему Computer Vision с opencv.

#include<opencv2/opencv.hpp>
#include<iostream>
#include<string>
#include<vector>
#include "opencv2/video/background_segm.hpp"using namespace cv;
using namespace std;

int main()
{
Mat frame;
Mat back;
Mat fore;

VideoCapture cap;
cap.open("H:/competition.avi");

BackgroundSubtractorMOG2 bg(100,16,true);
bg.set("nmixtures",3);

vector<vector<Point> > contours;

namedWindow("Frame");
namedWindow("Background");

for(;;)
{
cap >> frame;
if(!frame.empty())
{
bg.operator ()(frame,fore);
bg.getBackgroundImage(back);
erode(fore,fore,Mat());
dilate(fore,fore,Mat());
findContours(fore,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
drawContours(frame,contours,-1,Scalar(0,0,255),2);
imshow("Frame",frame);
imshow("Background",back);
if(waitKey(30) >= 0) break;
}
else
break;
}
return 0;
}

2

Решение

Я только сталкивался с этой проблемой и после серьезного веб-траления нашел ответ, по крайней мере, это работало в моем случае …

вам нужно перейти к настройкам проекта вашей Visual Studio, к c / c ++, к генерации кода и изменить библиотеку времени выполнения на Многопоточную отладочную DLL (/ MDd).

Кажется, эта ошибка происходит из-за однопоточной библиотеки DLL, которая пытается запустить многопоточный проект или что-то в этом роде.

удачи!

4

Другие решения

По неизвестным причинам в некоторых версиях opencv (по крайней мере, 2.x) есть переменная CMake «BUILD_WITH_STATIC_CRT», которая по умолчанию включена, что приводит к возникновению подобных проблем. Отключите этот флаг, тогда решение должно быть сгенерировано с определением / MDd.

Во-вторых, откройте свой exe-файл в программе для обхода зависимостей. Ищите несколько версий библиотек времени выполнения MS C ++. Например, у вас может быть версия QT, созданная для msvcp110.dll (Visual Studio 2012), но ваш текущий проект использует msvcp120.dll (Visual Studio 2013).

1

Хорошо. Первым делом первым: хит Retry, предполагая, что вы отлаживаете (F5) и не запустили (запустите) программу, нажав (Ctrl + F5). Как только вы нажмете «Повторить», вы увидите стек вызовов в отладчике.

Стек вызовов даст вам возможную подсказку, где происходит это недопустимое / двойное освобождение / удаление. Это будет вашей отправной точкой для анализа проблемы. Посмотрите, освобождена ли некоторая память двойным образом, выделена ли она с помощью другой кучи (например, mallocи существо deleteг). Или, если память, выделенная VC9 (например), освобождается DLL, записанной в VC8.

0

У меня была такая же ошибка,

Файл: f: \ dd \ vctools \ crt_bld \ self_x86 \ crt \ src \ dbgheap.c Строка 1424

Выражение: _pFirstBlock == pHead

при использовании режима отладки на vs12 при тестировании кода opencv для дополненной реальности, для справки использованный код был взят из Вот.

Решение, которое сработало для меня: проблема ушла после того, как я обновил настройки Visual Studio для режима выпуска, хотя я использовал только отладку. Другой код opencv работает без проблем в режиме отладки, поэтому я не удосужился полностью настроить параметры выпуска.

Во всяком случае, конкретно в выпуске части, которые мне пришлось обновить, были в Свойствах -> C ++ -> Дополнительные каталоги включения; и Свойства -> Линкер -> Ввод -> Дополнительные зависимости. После этого код работал без ошибок в режиме отладки и в режиме выпуска. Если вы не знаете, какие настройки использовать, они перечислены на страницах с инструкциями по настройке на сайте opencv, инструкции vs12 Вот

0

Я встречаю ту же проблему.
Я нахожу разрешение через этот URL.
Отладочное выражение с ошибочным утверждением: _pFirstBlock == pHead с использованием OpenCV и C ++ пытается вызвать SurfFeatureDetector

Причиной этой ошибки является проблема конфигурации , vs2012 соответствует папке vc11.
Это может помочь вам.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector