내 프로그램이 웹캠에서 입력을 받고 실시간으로 가우시안 피라미드를 출력하고 있습니다. 이 프로그램은 잘 실행,하지만 난합니다 (waitKey()을 트리거 키를 누름) 종료 할 때, 나는 오류 얻을 :이 내가 가우스를 만드는 데 사용하고있는 buildPyramid() 기능과 관련된 것으로 의심되는OpenCV : 디버그 어설 션 오류 (pHead-> nBlockUse)
Debug Assertion Failed!
_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))
Line 52: dbgdel.cpp
을 피라미드. 출력물에는 매트 배열이 필요합니다. 출력되는 매트의 수는 레벨 수에 따라 다르므로 출력은 포인터 여야합니다. 나는 문제가 변수를 초기화하는 것과 관련이 있는지, 아니면 결국 삭제되지 않는지는 모른다. 나는 또한 그 원인에 대해 완전히 벗어날 수 있습니다.
std::vector<cv::Mat> GPyr;
을하고 나는이와 가우시안 피라미드를 만드는 중이라서 :
나는이 함께 배열의 배열을 만드는 중이라서 오류의 원인이 무엇인지에 대한
buildPyramid(imgMatNew, GPyr, levels, BORDER_DEFAULT);
어떤 아이디어?
전체 소스 :
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/core/core_c.h"
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2\objdetect\objdetect.hpp"
using namespace cv;
using namespace std;
int main()
{
CvCapture* capture = 0;
// imgMatNew, imgMatOut were used to grab the current frame
Mat frame, frameCopy, image, imgMatNew, imgMatOut;
std::vector<cv::Mat> GPyr;
int levels = 4;
capture = cvCaptureFromCAM(CV_CAP_ANY); //0=default, -1=any camera, 1..99=your camera
if (!capture)
{
cout << "No camera detected" << endl;
}
//cvNamedWindow("result", CV_WINDOW_AUTOSIZE);
namedWindow("GPyrOut", WINDOW_AUTOSIZE);
namedWindow("imageNew", WINDOW_AUTOSIZE);
if (capture)
{
cout << "In capture ..." << endl;
for (;;)
{
// capture frame from video camera
IplImage* iplImg = cvQueryFrame(capture);
frame = iplImg;
// convert ilpImg into Mat format for easy processing
imgMatNew = cvarrToMat(iplImg, 1);
// Start Image Processing Here
buildPyramid(imgMatNew, GPyr, levels, BORDER_DEFAULT);
// Show Window
imshow("GPyrOut", GPyr[levels]); //show G Pyr, at a certain level, mex index = levels
imshow("imageNew", imgMatNew); //show window
if (waitKey(10) >= 0)
break;
}
// waitKey(0);
}
cvReleaseCapture(&capture);
return 0;
}