2012-07-13 36 views
0

我试图根据什么本网站书面 http://www.lirtex.com/robotics/fast-object-tracking-robot-computer-vision/cvCvtColor zhcon失败

初始化参数

CvCapture *capture = cvCaptureFromCAM(0); 

int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); 
int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); 

IplImage *frame; 

CvSize size = cvSize(640,480); 
cvNamedWindow("Camera", CV_WINDOW_NORMAL ); 
cvNamedWindow("HSV", CV_WINDOW_NORMAL ); 
cvNamedWindow("EdgeDetection", CV_WINDOW_NORMAL ); 

cvResizeWindow("Camera",640,480); 
cvResizeWindow("HSV",640,480); 
cvResizeWindow("EdgeDetection",640,480); 



IplImage * hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3); 
IplImage* thresholded = cvCreateImage(size, IPL_DEPTH_8U, 1); 

当IM调用函数cvCvtColor这样运行下面的程序:

cvCvtColor(frame, frame , CV_BGR2HSV); 

与第二参数等于第一个作品

但是当IM调用这样

​​

功能的失败,并抛出一个异常

有没有人有任何想法,为什么出现这种情况?

回答

1

该阵列是捕获图像的大小,而* hsv_frame *已被硬编码为640x480。色彩空间转换操作(cvCvtColor)要求源和目标的大小相同,因此例外。

解决方案:

a。通过设置

CvSize size = cvSize(frame->width, frame->height);

-OR-

b使用的尺寸与输入相同。如果您希望最终的o/p为640x480,请使用以下尺寸将输入尺寸调整为所需尺寸:cvResize

最后一个提示:与C相比,C++界面更加直观,稳定得多并且增加了功能接口。我建议转移到OpenCV的C++接口

相关问题