//-------------------------------------------------------------- void testApp::draw(){ ofSetColor(255, 255, 255); colorImg.draw(0, 0, ofGetWidth(), ofGetHeight()); glPushMatrix(); glScalef(ofGetWidth() / (float)greyImageSmall.getWidth(), ofGetHeight() / (float)greyImageSmall.getHeight(), 1); // haarTracker.draw(0, 0); ofNoFill(); for(int i = 0; i < haarFinder.blobs.size(); i++) { ofRectangle cur = haarFinder.blobs[i].boundingRect; // ofRect(cur.x, cur.y, cur.width, cur.height); int iw = cur.width * 1.4; img.draw(haarFinder.blobs[i].centroid, iw, iw * img.getHeight() / img.getWidth()); } glPopMatrix(); }
void ofApp::draw() { ofBackground(0.0, 0.0, 0.0); ofSetColor(255.0,255.0,255.0); ofFill(); for (int i = 0; i < 10; i++) { ofDrawBitmapString(verbalInstructions[i], 10, (i*20)+600); } if (cameraInfoIsOn) { ofSetColor(255.0, 255.0, 255.0); ofFill(); /* drawing cameras */ ofSetColor(255.0,0.0,0.0); ofDrawBitmapString("Active column", 10, 30+10); ofSetColor(0.0,0.0,255.0); ofDrawBitmapString("Active camera #", 10, 50+10); ofSetColor(255,105,180); ofDrawBitmapString("# of Pedestrians", 10, 60+20); ofSetColor(255.0, 255.0, 255.0); int cnt = 0; for (int i = 300-70; i <= 300+700; i+=70) { if (cnt == 4 || cnt == 5 ) { ofSetColor(cameraColor1); ofDrawBitmapString("["+ofToString(cnt+1)+"]", i+22, 50+10); ofSetColor(255,105,180); ofDrawBitmapString((int)micLevelsTopNew[cnt], i+35, 60+10); cout << i+35 << endl; ofSetColor(255.0, 255.0, 255.0); } else { if (simulationIsOn) { ofSetColor(255,105,180); } else { ofSetColor(100,100,100); } ofDrawBitmapString((int)micLevelsTopNew[cnt], i+35, 60+10); cout << i+35 << endl; ofSetColor(255.0, 255.0, 255.0); ofDrawBitmapString("["+ofToString(cnt+1)+"]", i+22, 50+10); } cnt++; } cout << "" << endl; /* Draw Columns */ cnt = 0; ofFill(); ofSetColor(100.0, 100.0, 100.0); for (int i = 300; i <= 300+700; i+=70) { if (cnt == 4) { ofSetColor(columnColor); ofDrawCircle(i, 45, 7); ofSetColor(100.0, 100.0, 100.0); } else { ofDrawCircle(i, 45, 7); } cnt++; } int max_pos = 0; int max_element = -1000; for (int i = 0; i < 12; i++) { if (micLevelsTopNew[i] > max_element) { max_pos = i; max_element = micLevelsTopNew[i]; } } //ofVec2f btm = absColumnPositionTop[max_pos]; ofVec2f btm = cameraPositionsTop[max_pos]; ofVec2f desired = btm - swarmPosition; float d = sqrt((desired.x*desired.x) + (desired.y+desired.y)); float r = ofMap(ofClamp(d, 0.0, 700.0), 0.0, 700.0, 25.0, 76.5); ofColor swarmColor = ofColor(255.0, 0.0, 255.0); ofSetColor(swarmColor); ofDrawRectangle(swarmPosition.x, 45, 10, 50); ofSetColor(columnColor); ofFill(); ofDrawCircle(578, 270, 14); for (int i = 0; i < contourFinder.nBlobs; i++){ contourFinder.blobs[i].draw(238, 150); ofSetColor(255); if(contourFinder.blobs[i].hole){ ofDrawBitmapString("hole", contourFinder.blobs[i].boundingRect.getCenter().x + 360, contourFinder.blobs[i].boundingRect.getCenter().y + 540); } } ofNoFill(); ofSetColor(cameraColor1); ofDrawBitmapString("Camera 5", 238, 140); ofDrawRectangle(238, 150, 340, 240); ofSetColor(255,255,255,50.0); colorImg.draw(238, 150); for (int i = 0; i < contourFinder1.nBlobs; i++){ contourFinder1.blobs[i].draw(578, 150); // draw over the centroid if the blob is a hole ofSetColor(255); if(contourFinder1.blobs[i].hole){ ofDrawBitmapString("hole", contourFinder1.blobs[i].boundingRect.getCenter().x + 360, contourFinder1.blobs[i].boundingRect.getCenter().y + 540); } } ofNoFill(); ofSetColor(cameraColor2); ofDrawBitmapString("Camera 6", 578, 140); ofDrawRectangle(578, 150, 340, 240); ofSetColor(255,255,255,50.0); colorImg1.draw(578, 150); } ofEnableLighting(); pointLight.enable(); material.begin(); ofPushMatrix(); cam.begin(); peopleMaterial.begin(); if (simulationIsOn) { for (int i = 0; i < 20; i++) { ofSpherePrimitive cyl; cyl.setPosition(spheresXPos[i]+=ofRandom(1.5), spheresZPos[i], 10.9297); cyl.set(10, 10); cyl.draw(); if (spheresXPos[i] >= 0.0) { spheresXPos[i] = ofRandom(result["region0"]["ring0"]["point0"][0].asFloat()-500, result["region0"]["ring0"]["point0"][0].asFloat()+500.0); } } } peopleMaterial.end(); ofSetColor(100.0); ofFill(); int ct = 0; for (int region = 0; region < 3; region++) { string reg = "region" + ofToString(region); for (int pointPos = 0; pointPos < 4; pointPos++) { if (region == 1 && pointPos == 3) { } else { string point = "point" + ofToString(pointPos); ofCylinderPrimitive cyl; cyl.setPosition(columnGeometry[reg][point][0].asFloat(), columnGeometry[reg][point][1].asFloat(), columnGeometry[reg][point][2].asFloat()-90); cyl.set(2.0, 130.0); cyl.rotate(90, ofVec3f(1.0, 0.0, 0.0)); if (ct == 4) { columnMaterial.begin(); cyl.draw(); columnMaterial.end(); } else { cyl.draw(); } ct++; } } } material.end(); ofDisableLighting(); newDrawRegion(gaussianBottom, 0, 3, false); ofSetColor(155.0, 155.0, 155.0); ofFill(); for (int face = 0; face < 5; face++) { string fac = "face" + ofToString(face); ofPoint p1; ofPoint p2; ofPoint p3; ofPoint p4; p1.set(ofVec3f(faceGeometry[fac]["point0"][0].asFloat(),faceGeometry[fac]["point0"][1].asFloat(),faceGeometry[fac]["point0"][2].asFloat())); p2.set(ofVec3f(faceGeometry[fac]["point1"][0].asFloat(),faceGeometry[fac]["point1"][1].asFloat(),faceGeometry[fac]["point1"][2].asFloat())); p3.set(ofVec3f(faceGeometry[fac]["point2"][0].asFloat(),faceGeometry[fac]["point2"][1].asFloat(),faceGeometry[fac]["point2"][2].asFloat())); p4.set(ofVec3f(faceGeometry[fac]["point3"][0].asFloat(),faceGeometry[fac]["point3"][1].asFloat(),faceGeometry[fac]["point3"][2].asFloat())); ofDrawLine(p1, p2); ofDrawLine(p2, p3); ofDrawLine(p3, p4); ofDrawLine(p4, p1); } cam.end(); ofPopMatrix(); sendToDMX(); vector<ofVideoDevice> devices = vidGrabber.listDevices(); //ofDrawBitmapString(pcCams[0], 400, 50); //ofDrawBitmapString(pcCams[1], 400, 100); }
void draw() { ofSetColor(255); // A few helper variables for layout. int hw = width / 2; // Half width int hh = height / 2; // Half height. int qw = width / 4; // Quarter width. int qh = height / 4; // Quarter height. int lx = 14; // Label offset x. int ly = 20; // Label offset y. grayscaleImage.draw(0, 0, qw, qh); ofDrawBitmapStringHighlight("0. Grayscale", lx, ly); grayscaleBackgroundImage.draw(qw, 0, qw, qh); ofDrawBitmapStringHighlight("1. Background\n (spacebar)", lx + qw, ly); grayscaleAbsoluteDifference.draw(0, qh, qw, qh); ofDrawBitmapStringHighlight("2. Grayscale - Background", lx, ly + qh); grayscaleBinary.draw(qw, qh, qw, qh); ofDrawBitmapStringHighlight("3. Threshold " + ofToString(threshold) + "\n (-/+: change threshold)\n ( i: invert)", lx + qw, ly + qh); // Here we use ofPushMatrix(), ... to scale all of the contours and bounding boxes. ofPushStyle(); ofPushMatrix(); ofTranslate(hw, 0); ofScale(0.5, 0.5, 1); grayscaleBinary.draw(0, 0); contourFinder.draw(); // Draw all of the contours and their bounding boxes. // Draw our line. ofSetColor(ofColor::yellow); holePositions.draw(); ofPopMatrix(); ofDrawBitmapStringHighlight("4. Contours and Bounding Boxes\n Draw a yellow line to follow\n the center of the largest blob.", lx + hw, ly); ofPopStyle(); colorImage.draw(0, 0);//, hw, hh); // ofDrawBitmapStringHighlight("5. Original", lx, ly + hh); for (int i = 0; i < contourFinder.nBlobs; ++i) { ofPolyline contour(contourFinder.blobs[i].pts); // Resample to reduce the resolution. contour = contour.getResampledBySpacing(5); float interpolatedIndex = offset * contour.size(); ofPoint position = contour.getPointAtIndexInterpolated(interpolatedIndex); ofPoint normal = contour.getNormalAtIndexInterpolated(interpolatedIndex); // Make a line pointing normal to the contour. ofPoint lineEnd = position - normal * 30; ofSetColor(ofColor::yellow); contour.draw(); ofLine(position, lineEnd); ofCircle(lineEnd, 2); } }