void Visualizer::Run(){ //std::cout << animationStatus << "..."; switch(animationStatus) { case 0: clear(); break; case 1: stroboscope(); break; case 2: lightchange(); break; case 3: fadeIn(); break; case 4: pulseCircle(); break; case 5: lines(); break; case 6: circles(); break; case 7: randomLines(); break; case 8: square(); break; case 9: randomPixel(); break; case 10: rotateLine(); break; } return; }
int main(int argc, char ** argv) { //Image 1 cv::Mat coins1 = cv::imread("images/coins1.png", CV_LOAD_IMAGE_GRAYSCALE); cv::Mat ddx1; cv::Mat ddy1; cv::Mat magnitude1; cv::Mat gradient1; cv::Mat magThreshold1; cv::Mat houghSpace1; cv::Mat houghSpaceDisplay1; // ddx(coins1, ddx1); // ddy(coins1, ddy1); magnitude(coins1, magnitude1); gradientDirection(coins1, gradient1); magThreshold(magnitude1, magThreshold1, 32); hough(magThreshold1, gradient1, houghSpace1); // displayHough(houghSpace1, houghSpaceDisplay1, magThreshold1.rows, magThreshold1.cols); circles(houghSpace1, coins1, 21); /* myNormalize(ddx1); myNormalize(ddy1); myNormalize(magnitude1); myNormalize(gradient1); cv::namedWindow("Ddx1", CV_WINDOW_AUTOSIZE); cv::namedWindow("Ddy1", CV_WINDOW_AUTOSIZE); cv::namedWindow("Magnitude1", CV_WINDOW_AUTOSIZE); cv::namedWindow("Gradient Direction1", CV_WINDOW_AUTOSIZE); cv::namedWindow("Magnitude threshold1", CV_WINDOW_AUTOSIZE); cv::namedWindow("Hough Space1", CV_WINDOW_AUTOSIZE); */ cv::namedWindow("Circled1", CV_WINDOW_AUTOSIZE); // cv::imshow("Ddx1", ddx1); // cv::imshow("Ddy1", ddy1); // cv::imshow("Magnitude1", magnitude1); // cv::imshow("Gradient Direction1", gradient1); // cv::imshow("Magnitude threshold1", magThreshold1); // cv::imshow("Hough Space1", houghSpaceDisplay1); cv::imshow("Circled1", coins1); //Image 2 cv::Mat coins2 = cv::imread("images/coins2.png", CV_LOAD_IMAGE_GRAYSCALE); cv::Mat ddx2; cv::Mat ddy2; cv::Mat magnitude2; cv::Mat gradient2; cv::Mat magThreshold2; cv::Mat houghSpace2; cv::Mat houghSpaceDisplay2; // ddx(coins2, ddx2); // ddy(coins2, ddy2); magnitude(coins2, magnitude2); gradientDirection(coins2, gradient2); magThreshold(magnitude2, magThreshold2, 32); hough(magThreshold2, gradient2, houghSpace2); // displayHough(houghSpace2, houghSpaceDisplay2, magThreshold2.rows, magThreshold2.cols); circles(houghSpace2, coins2, 22); /* myNormalize(ddx2); myNormalize(ddy2); myNormalize(magnitude2); myNormalize(gradient2); cv::namedWindow("Ddx2", CV_WINDOW_AUTOSIZE); cv::namedWindow("Ddy2", CV_WINDOW_AUTOSIZE); cv::namedWindow("Magnitude2", CV_WINDOW_AUTOSIZE); cv::namedWindow("Gradient Direction2", CV_WINDOW_AUTOSIZE); cv::namedWindow("Magnitude threshold2", CV_WINDOW_AUTOSIZE); cv::namedWindow("Hough Space2", CV_WINDOW_AUTOSIZE); */ cv::namedWindow("Circled2", CV_WINDOW_AUTOSIZE); // cv::imshow("Ddx2", ddx2); // cv::imshow("Ddy2", ddy2); // cv::imshow("Magnitude2", magnitude2); // cv::imshow("Gradient Direction2", gradient2); // cv::imshow("Magnitude threshold2", magThreshold2); // cv::imshow("Hough Space2", houghSpaceDisplay2); cv::imshow("Circled2", coins2); //Image 3 cv::Mat coins3 = cv::imread("images/coins3.png", CV_LOAD_IMAGE_GRAYSCALE); cv::Mat ddx3; cv::Mat ddy3; cv::Mat magnitude3; cv::Mat gradient3; cv::Mat magThreshold3; cv::Mat houghSpace3; cv::Mat houghSpaceDisplay3; // ddx(coins3, ddx3); // ddy(coins3, ddy3); magnitude(coins3, magnitude3); gradientDirection(coins3, gradient3); magThreshold(magnitude3, magThreshold3, 20); hough(magThreshold3, gradient3,houghSpace3); // displayHough(houghSpace3, houghSpaceDisplay3, magThreshold3.rows, magThreshold3.cols); circles(houghSpace3, coins3, 12); // myNormalize(ddx3); // myNormalize(ddy3); myNormalize(magnitude3); myNormalize(gradient3); // cv::namedWindow("Ddx3", CV_WINDOW_AUTOSIZE); // cv::namedWindow("Ddy3", CV_WINDOW_AUTOSIZE); // cv::namedWindow("Magnitude3", CV_WINDOW_AUTOSIZE); // cv::namedWindow("Gradient Direction3", CV_WINDOW_AUTOSIZE); // cv::namedWindow("Magnitude threshold3", CV_WINDOW_AUTOSIZE); // cv::namedWindow("Hough Space3", CV_WINDOW_AUTOSIZE); cv::namedWindow("Circled3", CV_WINDOW_AUTOSIZE); // cv::imshow("Ddx3", ddx3); // cv::imshow("Ddy3", ddy3); // cv::imshow("Magnitude3", magnitude3); // cv::imshow("Gradient Direction3", gradient3); // cv::imshow("Magnitude threshold3", magThreshold3); // cv::imshow("Hough Space3", houghSpaceDisplay3); cv::imshow("Circled3", coins3); cv::waitKey(); return 0; }
// // смена ролей (a,b)<->(c,d). см. рисунок output2.gif void swap_side(int s) { int a, b, c, d, ea, eb, eac, ead, ebc, ebd, sad, sac, sbc, sbd; double sx, sy; ea=side[s].ea; eb=side[s].eb; a=side[s].a; b=side[s].b; c=side[s].c; d=side[s].d; if(elem[ea].ei==eb) {ead=elem[ea].ej; eac=elem[ea].ek; sad=elem[ea].sj; sac=elem[ea].sk;} if(elem[ea].ej==eb) {ead=elem[ea].ek; eac=elem[ea].ei; sad=elem[ea].sk; sac=elem[ea].si;} if(elem[ea].ek==eb) {ead=elem[ea].ei; eac=elem[ea].ej; sad=elem[ea].si; sac=elem[ea].sj;} if(elem[eb].ei==ea) {ebc=elem[eb].ej; ebd=elem[eb].ek; sbc=elem[eb].sj; sbd=elem[eb].sk;} if(elem[eb].ej==ea) {ebc=elem[eb].ek; ebd=elem[eb].ei; sbc=elem[eb].sk; sbd=elem[eb].si;} if(elem[eb].ek==ea) {ebc=elem[eb].ei; ebd=elem[eb].ej; sbc=elem[eb].si; sbd=elem[eb].sj;} elem[ea].i =a; elem[ea].j =b; elem[ea].k =d; elem[ea].ei=ebd; elem[ea].ej=ead; elem[ea].ek=eb; elem[ea].si=sbd; elem[ea].sj=sad; elem[ea].sk=s; elem[eb].i =a; elem[eb].j =c; elem[eb].k =b; elem[eb].ei=ebc; elem[eb].ej=ea; elem[eb].ek=eac; elem[eb].si=sbc; elem[eb].sj=s; elem[eb].sk=sac; if(eac!=-1) { if(elem[eac].ei==ea) elem[eac].ei=eb; if(elem[eac].ej==ea) elem[eac].ej=eb; if(elem[eac].ek==ea) elem[eac].ek=eb; } if(ebd!=-1) { if(elem[ebd].ei==eb) elem[ebd].ei=ea; if(elem[ebd].ej==eb) elem[ebd].ej=ea; if(elem[ebd].ek==eb) elem[ebd].ek=ea; } if(side[sad].ea==ea) {side[sad].a=b;} if(side[sad].eb==ea) {side[sad].b=b;} if(side[sbc].ea==eb) {side[sbc].a=a;} if(side[sbc].eb==eb) {side[sbc].b=a;} if(side[sbd].ea==eb) {side[sbd].ea=ea; side[sbd].a=a;} if(side[sbd].eb==eb) {side[sbd].eb=ea; side[sbd].b=a;} if(a<b) {side[s].c=a; side[s].d=b; side[s].a=d; side[s].b=c; side[s].ea=ea; side[s].eb=eb;} else {side[s].c=b; side[s].d=a; side[s].a=c; side[s].b=d; side[s].ea=eb; side[s].eb=ea;} sx = node[side[s].c].x - node[side[s].d].x; sy = node[side[s].c].y - node[side[s].d].y; side[s].s = SQRT(sx*sx+sy*sy); if(side[sac].ea==ea) {side[sac].ea=eb; side[sac].a=b;} if(side[sac].eb==ea) {side[sac].eb=eb; side[sac].b=b;} if(side[sad].ea==ea) {side[sad].a=b;} if(side[sad].eb==ea) {side[sad].b=b;} if(side[sbc].ea==eb) {side[sbc].a=a;} if(side[sbc].eb==eb) {side[sbc].b=a;} if(side[sbd].ea==eb) {side[sbd].ea=ea; side[sbd].a=a;} if(side[sbd].eb==eb) {side[sbd].eb=ea; side[sbd].b=a;} circles(ea); circles(eb); }