Skip to content

Commit 28f77ac

Browse files
committed
Merge branch 'devel'
2 parents f7c78eb + 99804d0 commit 28f77ac

File tree

4 files changed

+21
-14
lines changed

4 files changed

+21
-14
lines changed

example/main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,11 @@ void testJoin(){
176176
Mat img,imt,im2;
177177
cvtColor(im,img,CV_BGR2GRAY);
178178
threshold(img,imt,254,255,CV_THRESH_BINARY_INV);
179+
//imt = imt(Rect(30,50,100,100));
179180
imshow("binImage",imt);
180181
CBlobResult res(imt,Mat(),NUMCORES);
181182
im2 = im.clone();
183+
//im2 = im(Rect(30,50,100,100)).clone();
182184
stringstream s;
183185
for(int i=0;i<res.GetNumBlobs();i++){
184186
Scalar mean, stddev;

library/ComponentLabeling.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -452,40 +452,45 @@ myCompLabelerGroup::~myCompLabelerGroup()
452452
delete [] labels;
453453
}
454454

455-
void myCompLabelerGroup::set( int numThreads, Mat img )
455+
void myCompLabelerGroup::set( int nThreads, Mat binIm )
456456
{
457-
this->numThreads=numThreads;
458-
this->img=img;
457+
this->numThreads=nThreads;
458+
if(binIm.isContinuous()){
459+
this->img=binIm;
460+
}
461+
else{
462+
this->img=binIm.clone();
463+
}
459464
//this->labels = Mat_<int>::zeros(img.size());
460465
if (labels){
461466
delete [] labels;
462467
}
463-
int nPts = img.size().width*img.size().height;
468+
int nPts = binIm.size().width*binIm.size().height;
464469
labels = new CBlobContour*[nPts];
465470
memset(labels,0,nPts*sizeof(CBlob*));
466471

467472
if(tIds)
468473
delete []tIds;
469474
if(labelers){
470-
for(int i=0;i<numThreads;i++){
475+
for(int i=0;i<nThreads;i++){
471476
delete labelers[i];
472477
}
473478
delete []labelers;
474479
}
475-
tIds = new pthread_t[numThreads];
476-
labelers = new myCompLabeler*[numThreads];
477-
Size sz = img.size();
480+
tIds = new pthread_t[nThreads];
481+
labelers = new myCompLabeler*[nThreads];
482+
Size sz = binIm.size();
478483
int numPx = sz.width*sz.width;
479484
int i=0;
480-
for(i;i<numThreads-1;i++){
481-
int yStart = (int)((float)i/numThreads*sz.height);
482-
int yEnd = (int)((float)(i+1)/numThreads*sz.height);
485+
for(i;i<nThreads-1;i++){
486+
int yStart = (int)((float)i/nThreads*sz.height);
487+
int yEnd = (int)((float)(i+1)/nThreads*sz.height);
483488
Point st(0,yStart);
484489
Point en(sz.width,yEnd);
485490
labelers[i] = new myCompLabeler(img,labels,st,en);
486491
labelers[i]->parent=this;
487492
}
488-
Point st(0,(int)((float)i/numThreads*sz.height));
493+
Point st(0,(int)((float)i/nThreads*sz.height));
489494
Point en(sz.width,sz.height);
490495
//st = Point(0,187);
491496
labelers[i] = new myCompLabeler(img,labels,st,en);

library/ComponentLabeling.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class myCompLabeler{
2323
CBlobContour** labels;
2424
int currentLabel; //currentLabel
2525
int r,c,pos;
26-
int w,h; //Width & height of image
26+
int w,h; //Width& Height of image
2727
uchar dir;
2828
static int freemanR[8],freemanC[8];
2929
bool singlePixBlob;

library/blob.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,7 @@ void CBlob::FillBlob( IplImage *image, CvScalar color, int offsetX , int offsetY
794794
void CBlob::FillBlob( Mat image, CvScalar color, int offsetX, int offsetY, bool intContours, const Mat srcImage){
795795
CV_FUNCNAME("CBlob::FillBlob");
796796
__CV_BEGIN__;
797-
if(srcImage.data)
797+
if(srcImage.data && intContours)
798798
CV_ASSERT(image.size()==srcImage.size() && image.type() == srcImage.type());
799799
{
800800
Rect bbox = GetBoundingBox();

0 commit comments

Comments
 (0)