Segmentation fault with opencv function
I'm trying to detect a blob on a video feed with cvBlob
lib. I think, I made a mistake with pointers, but I can't figure out where.
Moreover, do I have to free some of this variable?
The problem appears in row: unsigned int result=cvb::cvLabel(src_g, labelImg, blobs);
Mat& corridorProces(Mat& resultImg)
{
Mat srcMat=resultImg.clone();
cvtColor( resultImg, resultImg, CV_RGB2GRAY );
IplImage src= resultImg.clone();
IplImage *src_g= new IplImage(src);
IplImage *src_g_inv=new IplImage(src);
cvThreshold(src_g, src_g_inv,35,255, CV_THRESH_BINARY_INV);
cvThreshold(src_g, src_g,40,255, CV_THRESH_BINARY);
IplImage *labelImg=cvCreateImage(cvGetSize(src_g), IPL_DEPTH_LABEL, 1);
cvb::CvBlobs blobs;
unsigned int result=cvb::cvLabel(src_g, labelImg, blobs);
...
}
This question is not related to ROS. It's better suited in cvBlob project mailing list or similar, not here.
Simply comment out all the code inside the function, and uncomment line by line until you find the one that give you a segmentation fault. It's not something related to ROS. It's a programming issue.
The weird thing is that the algorithm implenented in Opencv works for 1 image, but when I try it in ROS, where the cv_brigde returns a cv::MAT() and I convert into Iplimage, I receive segmentation fault error.