OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 1686|回复: 0

请教cvFilter2D中核的设置

[复制链接]
发表于 2008-10-30 10:10:31 | 显示全部楼层 |阅读模式
程序编译链接都没有问题,在运行时报错,如下
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(&quot;video&quot;, 1);
        cvNamedWindow(&quot;filtering&quot;, 1);

        cvMoveWindow(&quot;video&quot;,30,0);
        cvMoveWindow(&quot;filtering&quot;,360,0);
   
    pCapture=cvCaptureFromAVI(&quot;video2.avi&quot;);
   
        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(&quot;video&quot;,pFrame);
                  cvShowImage(&quot;filtering&quot;,pFramefilter);
          }
          
        
        }
        cvWaitKey(0);
    cvReleaseImage( &pFrame );
    cvReleaseImage( &pBkImg );
        cvReleaseImage( &pFramefilter);
    return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-10-20 02:10 , Processed in 0.038169 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表