drawing.c
上传用户:piaoyu228
上传日期:2022-07-24
资源大小:1k
文件大小:6k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #ifdef _CH_
  2. #pragma package <opencv>
  3. #endif
  4. #ifndef _EiC
  5. #include "cv.h"
  6. #include "highgui.h"
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #endif
  10. #define NUMBER 100
  11. #define DELAY 5
  12. char wndname[] = "Drawing Demo";
  13. CvScalar random_color(CvRNG* rng)
  14. {
  15.     int icolor = cvRandInt(rng);
  16.     return CV_RGB(icolor&255, (icolor>>8)&255, (icolor>>16)&255);
  17. }
  18. int main( int argc, char** argv )
  19. {
  20.     int line_type = CV_AA; // change it to 8 to see non-antialiased graphics
  21.     int i;
  22.     CvPoint pt1,pt2;
  23.     double angle;
  24.     CvSize sz;
  25.     CvPoint  ptt[6];
  26.     CvPoint* pt[2];
  27.     int  arr[2];
  28.     CvFont font;
  29.     CvRNG rng;
  30.     int width = 1000, height = 700;
  31.     int width3 = width*3, height3 = height*3;
  32.     CvSize text_size;
  33.     int ymin = 0;
  34.     // Load the source image
  35.     IplImage* image = cvCreateImage( cvSize(width,height), 8, 3 );
  36.     IplImage* image2;
  37.     // Create a window
  38.     cvNamedWindow(wndname, 1 );
  39.     cvZero( image );
  40.     cvShowImage(wndname,image);
  41.     rng = cvRNG((unsigned)-1);
  42.     pt[0] = &(ptt[0]);
  43.     pt[1] = &(ptt[3]);
  44.     arr[0] = 3;
  45.     arr[1] = 3;
  46.     for (i = 0; i< NUMBER; i++)
  47.     {
  48.         pt1.x=cvRandInt(&rng) % width3 - width;
  49.         pt1.y=cvRandInt(&rng) % height3 - height;
  50.         pt2.x=cvRandInt(&rng) % width3 - width;
  51.         pt2.y=cvRandInt(&rng) % height3 - height;
  52.         cvLine( image, pt1, pt2, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );
  53.         cvShowImage(wndname,image);
  54.         cvWaitKey(DELAY);
  55.     }
  56.     for (i = 0; i< NUMBER; i++)
  57.     {
  58.         pt1.x=cvRandInt(&rng) % width3 - width;
  59.         pt1.y=cvRandInt(&rng) % height3 - height;
  60.         pt2.x=cvRandInt(&rng) % width3 - width;
  61.         pt2.y=cvRandInt(&rng) % height3 - height;
  62.         cvRectangle( image,pt1, pt2, random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );
  63.         cvShowImage(wndname,image);
  64.         cvWaitKey(DELAY);
  65.     }
  66.     for (i = 0; i< NUMBER; i++)
  67.     {
  68.         pt1.x=cvRandInt(&rng) % width3 - width;
  69.         pt1.y=cvRandInt(&rng) % height3 - height;
  70.         sz.width =cvRandInt(&rng)%200;
  71.         sz.height=cvRandInt(&rng)%200;
  72.         angle = (cvRandInt(&rng)%1000)*0.180;
  73.         cvEllipse( image, pt1, sz, angle, angle - 100, angle + 200,
  74.                    random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );
  75.         cvShowImage(wndname,image);
  76.         cvWaitKey(DELAY);
  77.     }
  78.     for (i = 0; i< NUMBER; i++)
  79.     {
  80.         pt[0][0].x=cvRandInt(&rng) % width3 - width;
  81.         pt[0][0].y=cvRandInt(&rng) % height3 - height;
  82.         pt[0][1].x=cvRandInt(&rng) % width3 - width;
  83.         pt[0][1].y=cvRandInt(&rng) % height3 - height;
  84.         pt[0][2].x=cvRandInt(&rng) % width3 - width;
  85.         pt[0][2].y=cvRandInt(&rng) % height3 - height;
  86.         pt[1][0].x=cvRandInt(&rng) % width3 - width;
  87.         pt[1][0].y=cvRandInt(&rng) % height3 - height;
  88.         pt[1][1].x=cvRandInt(&rng) % width3 - width;
  89.         pt[1][1].y=cvRandInt(&rng) % height3 - height;
  90.         pt[1][2].x=cvRandInt(&rng) % width3 - width;
  91.         pt[1][2].y=cvRandInt(&rng) % height3 - height;
  92.         cvPolyLine( image, pt, arr, 2, 1, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );
  93.         cvShowImage(wndname,image);
  94.         cvWaitKey(DELAY);
  95.     }
  96.     for (i = 0; i< NUMBER; i++)
  97.     {
  98.         pt[0][0].x=cvRandInt(&rng) % width3 - width;
  99.         pt[0][0].y=cvRandInt(&rng) % height3 - height;
  100.         pt[0][1].x=cvRandInt(&rng) % width3 - width;
  101.         pt[0][1].y=cvRandInt(&rng) % height3 - height;
  102.         pt[0][2].x=cvRandInt(&rng) % width3 - width;
  103.         pt[0][2].y=cvRandInt(&rng) % height3 - height;
  104.         pt[1][0].x=cvRandInt(&rng) % width3 - width;
  105.         pt[1][0].y=cvRandInt(&rng) % height3 - height;
  106.         pt[1][1].x=cvRandInt(&rng) % width3 - width;
  107.         pt[1][1].y=cvRandInt(&rng) % height3 - height;
  108.         pt[1][2].x=cvRandInt(&rng) % width3 - width;
  109.         pt[1][2].y=cvRandInt(&rng) % height3 - height;
  110.         cvFillPoly( image, pt, arr, 2, random_color(&rng), line_type, 0 );
  111.         cvShowImage(wndname,image);
  112.         cvWaitKey(DELAY);
  113.     }
  114.     for (i = 0; i< NUMBER; i++)
  115.     {
  116.         pt1.x=cvRandInt(&rng) % width3 - width;
  117.         pt1.y=cvRandInt(&rng) % height3 - height;
  118.         cvCircle( image, pt1, cvRandInt(&rng)%300, random_color(&rng),
  119.                   cvRandInt(&rng)%10-1, line_type, 0 );
  120.         cvShowImage(wndname,image);
  121.         cvWaitKey(DELAY);
  122.     }
  123.     for (i = 1; i< NUMBER; i++)
  124.     {
  125.         pt1.x=cvRandInt(&rng) % width3 - width;
  126.         pt1.y=cvRandInt(&rng) % height3 - height;
  127.         cvInitFont( &font, cvRandInt(&rng) % 8,
  128.                     (cvRandInt(&rng)%100)*0.05+0.1, (cvRandInt(&rng)%100)*0.05+0.1, 
  129.                     (cvRandInt(&rng)%5)*0.1, cvRound(cvRandInt(&rng)%10), line_type );
  130.         cvPutText( image, "Testing text rendering!", pt1, &font, random_color(&rng));
  131.         cvShowImage(wndname,image);
  132.         cvWaitKey(DELAY);
  133.     }
  134.     cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX, 3, 3, 0.0, 5, line_type );
  135.     cvGetTextSize( "OpenCV forever!", &font, &text_size, &ymin );
  136.     pt1.x = (width - text_size.width)/2;
  137.     pt1.y = (height + text_size.height)/2;
  138.     image2 = cvCloneImage(image);
  139.     for( i = 0; i < 255; i++ )
  140.     {
  141.         cvSubS( image2, cvScalarAll(i), image, 0 );
  142.         cvPutText( image, "OpenCV forever!", pt1, &font, CV_RGB(255,i,i));
  143.         cvShowImage(wndname,image);
  144.         cvWaitKey(DELAY);
  145.     }
  146.     // Wait for a key stroke; the same function arranges events processing
  147.     cvWaitKey(0);
  148.     cvReleaseImage(&image);
  149.     cvReleaseImage(&image2);
  150.     cvDestroyWindow(wndname);
  151.     return 0;
  152. }
  153. #ifdef _EiC
  154. main(1,"drawing.c");
  155. #endif