私のコードに問題があります。デバッグアサーション失敗Opencv関数
int main()
{
//altrimento creo la finestra
Mat image;
Mat fgMaskMOG2;
Rect mr;
Ptr<BackgroundSubtractor> pKNN;
//imposto la sequenza delle immagini
std::string path = "D:\\ProjectFile\\CoreSaw_DataFusion\\Dataset\\Persona posa oggetto\\gray-%06d.jpg";
VideoCapture sequence(path);
//se non è aperto esco con codice di errore
if (!sequence.isOpened())
{
cerr << "Failed to open Image Sequence!\n" << endl;
return 1;
}
for (;;)
{
//scelgo l'immagine seguente
sequence >> image;
resize(image, image, Size(400,400));
//ridimensiono l'immagine perchè permette una miglior rilevazione
//se vuota finisco la sequenza
if (image.empty())
{
cout << "End of Sequence" << endl;
break;
}
try
{
apply_BackgroundSubstraction(image, fgMaskMOG2);
}
catch (Exception exc)
{
cerr << "Main: " << exc.msg << endl;
}
waitKey(1);
}
return 0;
}
と私の機能は次のとおりです:私は、Visual Studio上でのOpenCV 3.0で背景substractionを実行しようと2015年main関数があり、この機能は、私はこのエラーを持って終了し
void apply_BackgroundSubstraction(Mat image, Mat fgMask)
{
vector< vector<Point> > contours;
try
{
namedWindow("Display window");// Create a window for display.
Ptr<BackgroundSubtractor> pKNN = createBackgroundSubtractorKNN(216, 3500.0, true);
pKNN->apply(image, fgMask); //applico l'algoritmo di background substraction
Mat contourImg = fgMask.clone();
findContours(contourImg, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
vector<vector< Point> >::iterator itc = contours.begin();
while (itc != contours.end()) {
Rect rect = boundingRect(Mat(*itc));
rectangle(image, rect, CV_RGB(255, 0, 0));
itc++;
}
imshow("Display window", fgMask);
imshow("Blob", image);
}
catch (Exception exc)
{
cerr << "apply_BackgroundSubstraction: " << exc.msg << endl;
}
}
DEBUG ASSERTION FAILDED : IS BLOCK_TYPE_VALID(HEADER->BLOCK_USE)
お手伝いできますか?
Visual Studio 14 2015を使用してopencvをビルドしましたか? – drescherjm
はい、私はビジュアルスタジオでCMakeを使用しています14 2015 –