|
程序编译链接都没有问题,在运行时报错,如下
Bad argument (kernel is not valid matrix)
in function CvLinearFilter::init,c\use\vp\opencv\src\cvfilter.cpp
我用的的核就是opencv教程基础篇实例5.6的核。
请问大家如何解决,谢谢!
d源代码如下:
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main( int argc, char** argv )
{
IplImage *pFrame=NULL;
IplImage *pFramefilter=NULL;
IplImage *pFrImg=NULL;
IplImage *pBkImg=NULL;
CvMat *pFrameMat=NULL;
CvMat *pFrameMafiltert=NULL;
CvMat *pFrMat=NULL;
CvMat *pBkMat=NULL;
CvCapture *pCapture=NULL;
int nFrmNum=0;
/*float k[25] = { 0.73f,0.82f,0.85f,0.82f,0.73f,
0.82f,0.92f,0.96f,0.92f,0.82f,
0.82f,0.96f,0 ,0.96f,0.85f,
0.82f,0.92f,0.96f,0.92f,0.82f,
0.73f,0.82f,0.85f,0.82f,0.73f};*/
float k[9] = { 1.f/16, 2.f/16, 1.f/16,
2.f/16, 4.f/16, 2.f/16,
1.f/16, 2.f/16, 1.f/16};
CvMat Km;
//cvInitMatHeader( &Km, 3, 3, CV_32FC1, k, CV_AUTOSTEP );
Km = cvMat( 5, 5, CV_32F, k );
cvNamedWindow("video", 1);
cvNamedWindow("filtering", 1);
cvMoveWindow("video",30,0);
cvMoveWindow("filtering",360,0);
pCapture=cvCaptureFromAVI("video2.avi");
while(pFrame=cvQueryFrame(pCapture))
{
nFrmNum++;
if (nFrmNum==1)
{
pBkImg=cvCreateImage(cvSize(pFrame->width,pFrame->height),IPL_DEPTH_8U,1);
pFrImg=cvCreateImage(cvSize(pFrame->width,pFrame->height),IPL_DEPTH_8U,1);
pFramefilter=cvCreateImage(cvSize(pFrame->width,pFrame->height),IPL_DEPTH_8U,1);
pBkMat=cvCreateMat(pFrame->height,pFrame->width,CV_32FC1);
pFrMat=cvCreateMat(pFrame->height,pFrame->width,CV_32FC1);
pFrameMat=cvCreateMat(pFrame->height,pFrame->width,CV_32FC1);
pFrameMafiltert=cvCreateMat(pFrame->height,pFrame->width,CV_32FC1);
cvCvtColor(pFrame,pBkImg,CV_BGR2GRAY);
cvCvtColor(pFrame,pFrImg,CV_BGR2GRAY);
cvCvtColor(pFrame,pFramefilter,CV_BGR2GRAY);
cvConvert(pFrImg,pFrameMat);
cvConvert(pFrImg,pFrMat);
cvConvert(pFrImg,pBkMat);
cvConvert(pFrImg,pFrameMafiltert);
}
else
{
cvCvtColor(pFrame,pFrImg,CV_BGR2GRAY);
cvConvert(pFrImg,pFrameMat);
cvFilter2D(pFrameMat,pFrameMafiltert,&k,cvPoint(-1,-1));
cvThreshold(pFrameMafiltert,pFramefilter,60,255,0,CV_THRESH_BINARY);
cvShowImage("video",pFrame);
cvShowImage("filtering",pFramefilter);
}
}
cvWaitKey(0);
cvReleaseImage( &pFrame );
cvReleaseImage( &pBkImg );
cvReleaseImage( &pFramefilter);
return 0;
} |
|