int main() { int thresh=25; CvCapture* capture; capture = cvCreateCameraCapture(-1); IplImage *frame,*res; char win[]="video_stream"; char win2[]="outline_feed"; cvNamedWindow(win,CV_WINDOW_AUTOSIZE); cvNamedWindow(win2,CV_WINDOW_AUTOSIZE); cvCreateTrackbar("Threshold",win2,&thresh,128); while(1) { frame=cvQueryFrame(capture); res = findedge(frame,thresh); clearnoise(res,0, 3); clearnoise(res,1, 3); cvShowImage(win,frame); cvShowImage(win2,res); if(cvWaitKey(50)==27) break; } cvReleaseImage(&frame); cvReleaseImage(&res); cvReleaseCapture(&capture); cvDestroyWindow(win); cvDestroyWindow(win2); return 0; }
int linkedgenpolys (edge2polydata_t *e2pdp) { edge_t *ep; poly_t *p0p, *p1p, *pp; if (!(ep = findedge (e2pdp->tlid))) { SUwarning (1, "linkedgenpolys", "findedge failed"); return -1; } p0p = p1p = NULL; if (e2pdp->polyidl && !(p0p = findpoly (e2pdp->polyidl, e2pdp->cenidl))) { SUwarning (1, "linkedgenpolys", "findpoly failed for left poly"); return -1; } if (e2pdp->polyidr && !(p1p = findpoly (e2pdp->polyidr, e2pdp->cenidr))) { SUwarning (1, "linkedgenpolys", "findpoly failed for right poly"); return -1; } if ( (ep->p0p && p0p && !ep->p1p && !p1p) || (!ep->p0p && !p0p && ep->p1p && p1p) ) pp = p0p, p0p = p1p, p1p = pp; if ((ep->p0p && p0p) || (ep->p1p && p1p)) SUwarning (1, "linkedgenpolys", "edge has polys attached"); if (p0p && !ep->p0p) { ep->p0p = p0p; if (p0p->edgepl == p0p->edgepn) { if (!(p0p->edgeps = vmresize ( Vmheap, p0p->edgeps, (p0p->edgepn * 2) * sizeof (edge_t *), VM_RSCOPY ))) { SUwarning (1, "linkedgenpolys", "vmresize failed (1)"); return -1; } p0p->edgepn *= 2; } p0p->edgeps[(ep->p0i = p0p->edgepl++)] = ep; } if (p1p && !ep->p1p) { ep->p1p = p1p; if (p1p->edgepl == p1p->edgepn) { if (!(p1p->edgeps = vmresize ( Vmheap, p1p->edgeps, (p1p->edgepn * 2) * sizeof (edge_t *), VM_RSCOPY ))) { SUwarning (1, "linkedgenpolys", "vmresize failed (2)"); return -1; } p1p->edgepn *= 2; } p1p->edgeps[(ep->p1i = p1p->edgepl++)] = ep; } return 0; }