我正在使用C++的openCV运行基本应用程序。我正在尝试使用cvSplit()将图像分成rgb组件,如下所示:

CvMat* mat;

//initialize mat

CvMat* b = cvCreateMat(mat->rows, mat->cols, CV_8UC1);
CvMat* g = cvCreateMat(mat->rows, mat->cols, CV_8UC1);
CvMat* r = cvCreateMat(mat->rows, mat->cols, CV_8UC1);
cvSplit(mat, b, g, r, NULL );

它的构建很好,但是当我尝试运行它时,出现以下错误:
OpenCV Error: Assertion failed (i < src.channels()) in cvSplit, file /home/username/Downloads/OpenCV-2.4.0/modules/core/src/convert.cpp, line 1196
terminate called after throwing an instance of 'cv::Exception'

此错误是什么意思,我该如何解决?

最佳答案

您用来创建Mat的IplImage应该是彩色的。您需要三个 channel 才能使用cvSplit。您可以在调试器中使用IplImage->nChannels进行检查。

10-04 19:36