public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* pthread help
@ 2012-07-12 19:48 emon
  2012-07-12 21:19 ` marco atzeri
  2012-07-12 21:52 ` LMH
  0 siblings, 2 replies; 6+ messages in thread
From: emon @ 2012-07-12 19:48 UTC (permalink / raw)
  To: cygwin


Need urgent help on thread: the goal here is the separtemask will take each
image and separate different contours and for each contour in the image it
will call handleobject thread. So every for loop will call the handeobject
thread. However, object index variable needs to be passed in each thread.
But only last value of objectndex is passed, this is becuase the speratemask
function loops and repalces the value of obj.objindx and only the last value
of obj.objindx is 
passed to all the threads. Is there anyway to pass each objectindex
value in handleobject. The code runs fine if we uncomment the
pthread_join(tid[objectIndex],NULL); but it will not give a parralel program


void separateMask(IplImage *maskImg)
{

for(r = contours; r != NULL; r = r->h_next){
cvSet(objectMaskImg, cvScalarAll(0), NULL);
CvScalar externalColor = cvScalarAll(0xff);
CvScalar holeColor = cvScalarAll(0x00);
int maxLevel = -1; 
int thinkness = CV_FILLED; 
int lineType = 8; /* 8-connected */
cvDrawContours(objectMaskImg, r, externalColor, holeColor, maxLevel,
thinkness, lineType, cvPoint(0,0));;
obj.objectMaskImg1[objectIndex]=(IplImage *) malloc(sizeof(IplImage));
obj.objectMaskImg1[objectIndex]=objectMaskImg;
obj.objindx=objectIndex;
obj.intensityOut1=intensityOut;
obj.tasOut1=tasOut;
pthread_create(&tid[objectIndex],NULL,handleObject,(void *)&obj);
//pthread_join(tid[objectIndex],NULL);
printf("objectindx %d\n",obj.objindx);
objectIndex++;

}
// cvReleaseImage(&objectMaskImg);
//cvReleaseMemStorage(&storage);
printf("Exitng Separatemask\n");

}


void* handleObject(void *arg)
{
int i, j;
handle *hndl;
hndl=(handle *) malloc(sizeof(handle));
hndl=(handle*)arg;
pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&lock);
IplImage *pImg;
float statistics_ratio[3][9];
pthread_t tid3;
tas3 tas2;
pImg = cvLoadImage("image.tif", CV_LOAD_IMAGE_ANYCOLOR |
CV_LOAD_IMAGE_ANYDEPTH);
if(pImg == NULL){
fprintf(stderr, "Fail to load image %s\n", "tiff file");
return ;
}
tas2.pImg1=pImg;
printf("tst%d\n",hndl->objindx);
tas2.x=hndl->objindx;
tas2.objectMaskImg1=hndl->objectMaskImg1[tas2.x];
tas2.statistics_ratio[3][9]=statistics_ratio[3][9];
double mean = average_intensity(pImg, tas2.objectMaskImg1); 
int total = total_white(pImg, tas2.objectMaskImg1);
pthread_mutex_unlock(&lock);

printf("Exiting handle object thread_id %d\n\n", pthread_self());
}

-- 
View this message in context: http://old.nabble.com/pthread-help-tp34152902p34152902.html
Sent from the Cygwin list mailing list archive at Nabble.com.


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-07-13  1:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-12 19:48 pthread help emon
2012-07-12 21:19 ` marco atzeri
2012-07-12 21:52 ` LMH
2012-07-12 22:29   ` Larry Hall (Cygwin)
2012-07-12 22:53     ` LMH
2012-07-13  1:20       ` Andrey Repin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).