c++ - cvBlob/Opencv : Why is my output variable empty?

标签 c++ image-processing opencv computer-vision

做的时候:

IplImage blobimg = image;

IplImage *labelImg=cvCreateImage(cvGetSize(&blobimg), IPL_DEPTH_LABEL, 1);
IplImage *test=cvCreateImage(cvGetSize(&blobimg), IPL_DEPTH_8U, 3);
unsigned int result=cvLabel(&blobimg, labelImg, blobs);

cvRenderBlobs(labelImg, blobs, &blobimg,test,CV_BLOB_RENDER_BOUNDING_BOX);
Mat imgMat(test);

imshow("Depth", imgMat);

我注意到我的测试变量是空的: enter image description here

我想我必须改为这样做:

cvRenderBlobs(labelImg, blobs, &blobimg,&blobimg,CV_BLOB_RENDER_BOUNDING_BOX);

但是 cvRenderBlobs destImg 必须有 3 个 channel 和 IPL_DEPTH_8U 而我的图像只有 1 个 channel ,因为它是灰色图像。

谁能告诉我这是为什么以及我该如何解决这个问题?

编辑

图片来源:

Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));
Mat image = *depthImage;

最佳答案

我会在这里猜测,但我见过的 IplImages 实例实际上不是指针的次数不多。您确定 image(无论它来自何处)不是指向 IplImage 结构的指针吗?

    IplImage *blobimg = image;

关于c++ - cvBlob/Opencv : Why is my output variable empty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339168/

相关文章:

php - 嘻哈 PHP 下载?

c++ - QGraphicsView使用鼠标滚轮在鼠标位置下放大和缩小

c++ - 错误 : passing ‘const Cell’ as ‘this’ argument of ‘void Cell::printcell()’ discards qualifiers [-fpermissive]

algorithm - 将重复出现的图像识别为更大的图像

php - php 图像调整大小时服务器工作负载增加

opencv - 通过 'Stereo'而不是 'IR'功能的深度字段

C++ 从字符串中提取两个引号

Qt 或 OpenCV : print out the codec of a video file

c - 如何从打开的 cv 中的文件夹中读取多个图像(使用 C)

javascript - 希望在 Javascript/WebGL 中访问 16 位图像数据