我从openCV开始,我必须将它用于学校的项目。我在Windows上使用CodeBlocks。
我正在尝试编写一个非常简单的函数,将RGB格式的图像转换为HSV格式,然后显示Hue通道。
long traiter_image(IplImage* Image)
{
IplImage* ImHSV = 0;
IplImage* chans[3];
cvCvtColor(Image, ImHSV, CV_BGR2HSV); // BGR to HSV
// split channels
cvSplit (ImHSV, chans[0], chans[1], chans[2], NULL);
Afficher("Teinte",chans[0]); // Display Hue
return 0;
}
我没有任何构建错误,但是当我执行代码时,会出现一个窗口,告诉我“在函数cvgetmat中传递了空数组指针”。问题来自cvCvtColor函数,但我不知道如何解决它......
答案 0 :(得分:1)
在调用cvCvtColor()
之前,您应该为输出图像创建内存,其大小和深度应与输入图像相同。
对于您的情况,它应该是:
IplImage* ImHSV = cvCreateImage(cvGetSize(Image), IPL_DEPTH_8U, 3);
cvCvtColor(Image, ImHSV, CV_BGR2HSV); // BGR to HSV