这是我在 opencv 中使用 C 接口(interface)显示图像的代码
IplImage * mSrcImg = cvLoadImage("C:\\test.jpg");
IplImage * mOutImg;
vector<IplImage*> b , g ,r;
cvSplit(&mSrcImg , &b , &g , &r , NULL);
cvEqualizeHist(&b, &b);
cvEqualizeHist(&g, &g);
cvEqualizeHist(&r, &r);
cvMerge(&b, &g, &r, NULL, &mOutImg );
cvShowImage("Image" , mOutImg);
cvWaitKey();
但是其中出现运行时错误。
错误
Bad argument (unknown array type) in unknown function , file ......source\matrix.cpp line 698
最佳答案
如果您需要使用C api,请参阅下面的内容,其作用与上面相同,
IplImage*src=0,*bgr,*b,*g,*r;
src = cvLoadImage("Flower.jpg",1);
bgr = cvCreateImage( cvGetSize(src), 8, 3 ) ;
b = cvCreateImage( cvGetSize(src), 8, 1 );
g = cvCreateImage( cvGetSize(src), 8, 1 );
r = cvCreateImage( cvGetSize(src), 8, 1 ) ;
cvSplit(src, b, g, r, 0 );
cvEqualizeHist( b, b );
cvEqualizeHist( g, g );
cvEqualizeHist( r, r );
cvMerge(b,g,r,0,bgr);
cvNamedWindow("source");
cvShowImage("source",src);
cvNamedWindow("hsv");
cvShowImage("hsv",bgr);
cvWaitKey(0);
在 C++ 接口(interface)中也可以看到相同的内容,
Mat src=imread("Flower.jpg",1);
Mat bgr[3];
split(src,bgr);
equalizeHist(bgr[0],bgr[0]);
equalizeHist(bgr[1],bgr[1]);
equalizeHist(bgr[2],bgr[2]);
Mat dst;
merge(bgr,3,dst);
imshow("src",src);
imshow("dst",dst);
waitKey();
关于c - 使用 C 接口(interface)的 cvMerge 和 cvShowImage 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010384/