做的时候:
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);
我注意到我的测试变量是空的:
我想我必须改为这样做:
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/