c - 使用 C 接口(interface)的 cvMerge 和 cvShowImage 错误

标签 c opencv

这是我在 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/

相关文章:

c - 128 位类型错误

c - 是否可以在没有包装类型的情况下从 OCaml 调用 C 函数?

opencv - 为什么 cv::imencode 为 bgr8 和 mono8 图像提供相似大小的输出缓冲区?

python - Python校准相机

c++ - 将 cv::Mat 转换为 tesseract

c - 数据结构中的说明符限定符列表错误

objective-c - Mac 分析磁盘的空闲扇区

c++ - 第一次的FlannBasedMatcher影响后面的FlannBasedMatcher的结果

python - 在Azure函数中导入python cv2时出错

c - 我无法理解 gdb 的输出