Pointers OpenCV Visual-C++;CVP分裂问题
我尝试了几种方法来打开图像和分割频道。我只想和3个矩阵一起工作。我不知道怎么了。 这是我的代码:Pointers OpenCV Visual-C++;CVP分裂问题,pointers,opencv,visual-c++-2010,Pointers,Opencv,Visual C++ 2010,我尝试了几种方法来打开图像和分割频道。我只想和3个矩阵一起工作。我不知道怎么了。 这是我的代码: IplImage* img = cvLoadImage( "C:\\foo.jpg" ); cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE ); cvShowImage( "Example1", img ); std::cout << "Hight: " << img->height << " Widt
IplImage* img = cvLoadImage( "C:\\foo.jpg" );
cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
cvShowImage( "Example1", img );
std::cout << "Hight: " << img->height << " Width: " << img->width;
CvMat* imgR= cvCreateMat(img->width,img->height,CV_8UC1);
CvMat* imgG= cvCreateMat(img->width,img->height,CV_8UC1);
CvMat* imgB= cvCreateMat(img->width,img->height,CV_8UC1);
cvSplit(&img, imgB, imgG, imgR, NULL);
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "Example1" );
return 0;
解决方案:
我不知道cv::Mat、cvMat和IplImage之间的区别。
这就是解决方案:
IplImage *r = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *g = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *b = cvCreateImage(cvGetSize(img), img->depth, 1);
cvSplit(img, b, g, r, NULL);
如果cvloadImage返回一个指向iplImage的指针,那么您不需要img上的“&”,它已经是一个指针了 cvSplit接受cvMat*a iplImage*不一样,您需要将其转换为cvMat 看
IplImage *r = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *g = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *b = cvCreateImage(cvGetSize(img), img->depth, 1);
cvSplit(img, b, g, r, NULL);