При выполнении:
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 канала и IPL_DEPTH_8U, а у моего изображения только 1 канал, так как это серое изображение.
Может кто-нибудь сказать мне, почему это так и как я могу это исправить?
Редактировать
Откуда исходит изображение:
Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));
Mat image = *depthImage;