首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cvBlob/Opencv:为什么我的输出变量为空?

cvBlob/Opencv:为什么我的输出变量为空?
EN

Stack Overflow用户
提问于 2011-12-01 09:39:26
回答 2查看 1.1K关注 0票数 1

在做时:

代码语言:javascript
复制
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);

我注意到我的测试变量是空的:

我想我必须这样做:

代码语言:javascript
复制
cvRenderBlobs(labelImg, blobs, &blobimg,&blobimg,CV_BLOB_RENDER_BOUNDING_BOX);

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

谁能告诉我这是为什么,我怎样才能解决这个问题?

编辑

图像的来源:

代码语言:javascript
复制
Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));
Mat image = *depthImage;
EN

回答 2

Stack Overflow用户

发布于 2011-12-01 20:35:48

我会在这里猜测,但并不是太多次,我已经看到IplImages的实例,这些实例实际上不是指针。您确定图像,无论来自何处,也是指向IplImage结构的指针吗?

代码语言:javascript
复制
    IplImage *blobimg = image;
票数 0
EN

Stack Overflow用户

发布于 2011-12-01 23:09:17

我在我的项目中使用了这部分代码,它可以工作,看看它是否有帮助:

代码语言:javascript
复制
//BYTE* blobMap = ... blobMap holds an image
CvMat mat = cvMat( HEIGHT, WIDTH, CV_8UC1, blobMap);
IplImage *img = cvCreateImage(cvSize(HEIGHT,WIDTH), IPL_DEPTH_8U, 1);
cvGetImage(&mat, img);
cvThreshold(img, img, 10, 255, CV_THRESH_BINARY);
IplImage *labelImg = cvCreateImage(cvGetSize(img),IPL_DEPTH_LABEL,1);
CvBlobs blobs;
unsigned int result = cvLabel(img, labelImg, blobs);
cvFilterByArea(blobs, 1000, 1680*HEIGHT);

IplImage *imgOut = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
cvRenderBlobs(labelImg, blobs, img, imgOut);
cvNamedWindow("test", 1);
cvShowImage("test", imgOut);
cvWaitKey(0);
cvDestroyWindow("test");

我也不喜欢您将Mat传递给IplImage的方式,您确定您的输入图像(blobimg)是安全的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8339168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档