AHF
AHF

Reputation: 1072

Error in cvMerge and cvShowImage using C interface

This is the code i am using for display image using C interface in opencv

        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();

but getting runtime error in it.

Error

Bad argument (unknown array type) in unknown function , file ......source\matrix.cpp line 698

Upvotes: 0

Views: 1052

Answers (1)

Haris
Haris

Reputation: 14053

If you necessary to use C api refer below, which will do the same as above,

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);

Also see the same in 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();

Upvotes: 1

Related Questions