opencv 摄像头使用初学者有关问题

opencv 摄像头使用菜鸟问题
#include "stdafx.h"  

#include <opencv/cv.h>  
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main( int argc, char** argv )  
{
IplImage* pFrame = NULL;  
IplImage* cannyImg = NULL;

CvCapture* pCapture = cvCreateCameraCapture(-1);  

cvNamedWindow("video", 1);  
// cvNamedWindow("canny", 1); 

/*****************为什么这一句一加上就出错?************************/
// cannyImg = cvCreateImage(cvGetSize(cvQueryFrame( pCapture )),IPL_DEPTH_8U,1); 

while(1)  
{  
pFrame=cvQueryFrame( pCapture );  
// cvCanny(pFrame, cannyImg, 50, 150, 3);
cvShowImage("video",pFrame);
// cvShowImage("canny",cannyImg);
char c=cvWaitKey(33);  
if(c==27)break;  
}   
cvReleaseCapture(&pCapture);  
cvDestroyWindow("video"); 
// cvDestroyWindow("canny");
}
 
while循环里面的暂时不看,可以引用起来也没关系
我想实现一个摄像头图像实时canny运算的程序
但是一加上上面那句话 程序就出错 为什么呢
------解决思路----------------------
cvCreateCameraCapture
cvQueryFrame的执行结果进行判断
可能还没拿到图片
------解决思路----------------------
引用:
cvCreateCameraCapture
cvQueryFrame的执行结果进行判断
可能还没拿到图片

我不觉得,因为楼主下面那部分是可以执行的,说明可以拿到图片,从代码上看没什么问题,楼主是不是少添加了什么库?