这个OpenCv代码有什么问题?

时间:2014-06-15 16:34:48

标签: opencv

我在这个opencv代码(C API)中尝试框架差异。    它给了我一个错误:

Assertion failed (src1.size() == dst.size() && src1.type() == dst. type()) in unknown function, file ........\ocv\opencv\src\cxcore\cxarithm.cpp , line 1563.

代码如下。 (当我尝试运行视频文件时,此程序似乎运行没有任何错误,但是当我尝试从笔记本电脑相机捕获时,它会出现此错误。如何解决此问题?

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{   
int key=0;

//CvCapture *capture=cvCreateCameraCapture(0);
CvCapture *capture=cvCaptureFromAVI("cmake.avi");
IplImage *frame=cvQueryFrame(capture);
IplImage *currframe=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);
IplImage *dstframe=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);
 int fps = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
cvNamedWindow("output",CV_WINDOW_NORMAL);

while(key!='x'){
            currframe=cvCloneImage(frame);
    frame=cvQueryFrame(capture);

    //cvCopy(frame,currframe,0);
    frame=cvQueryFrame(capture);

    cvSub(frame,currframe,dstframe);
    if(key==27) break;
    cvShowImage("output",dstframe);
    key = cvWaitKey( 1000 / fps );

}

cvReleaseCapture(&capture);
cvDestroyWindow("output");

 return 0;
  }

1 个答案:

答案 0 :(得分:0)

错误在于您正在尝试执行需要相同大小和类型的图像的操作。如果在调试器中运行代码,则可以看到它出现在哪一行。

它可能是您正在创建的目标图像之一。至少在C ++ api中,最好不要创建目标图像,而只是声明它们并让函数分配它需要的东西