drawing.c
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:5k
源码类别:

OpenCV

开发平台:

Visual C++

  1. /*  程序名:drawing..c
  2. 功能:展示OpenCV的图像绘制功能
  3. */
  4. #include "cv.h"
  5. #include "highgui.h"
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #define NUMBER 100
  9. #define DELAY 5
  10. char wndname[] = "Drawing Demo";
  11. CvScalar random_color(CvRNG* rng)
  12. {
  13.     int icolor = cvRandInt(rng);
  14.     return CV_RGB(icolor&255, (icolor>>8)&255, (icolor>>16)&255);
  15. }
  16. int main( int argc, char** argv )
  17. {
  18.     int line_type = CV_AA; // change it to 8 to see non-antialiased graphics
  19.     int i;
  20.     CvPoint pt1,pt2;
  21.     double angle;
  22.     CvSize sz;
  23.     CvPoint  ptt[6];
  24.     CvPoint* pt[2];
  25.     int  arr[2];
  26.     CvFont font;
  27.     CvRNG rng;
  28.     int width = 1000, height = 700;
  29.     int width3 = width*3, height3 = height*3;
  30.     CvSize text_size;
  31.     int ymin = 0;
  32.     // Load the source image
  33.     IplImage* image = cvCreateImage( cvSize(width,height), 8, 3 );
  34.     IplImage* image2;
  35.     // Create a window
  36.     cvNamedWindow(wndname, 1 );
  37.     cvZero( image );
  38.     cvShowImage(wndname,image);
  39.     rng = cvRNG((unsigned)-1);
  40.     pt[0] = &(ptt[0]);
  41.     pt[1] = &(ptt[3]);
  42.     arr[0] = 3;
  43.     arr[1] = 3;
  44.     for (i = 0; i< NUMBER; i++)
  45.     {
  46.         pt1.x=cvRandInt(&rng) % width3 - width;
  47.         pt1.y=cvRandInt(&rng) % height3 - height;
  48.         pt2.x=cvRandInt(&rng) % width3 - width;
  49.         pt2.y=cvRandInt(&rng) % height3 - height;
  50.         cvLine( image, pt1, pt2, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );
  51.         cvShowImage(wndname,image);
  52.         cvWaitKey(DELAY);
  53.     }
  54.     for (i = 0; i< NUMBER; i++)
  55.     {
  56.         pt1.x=cvRandInt(&rng) % width3 - width;
  57.         pt1.y=cvRandInt(&rng) % height3 - height;
  58.         pt2.x=cvRandInt(&rng) % width3 - width;
  59.         pt2.y=cvRandInt(&rng) % height3 - height;
  60.         cvRectangle( image,pt1, pt2, random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );
  61.         cvShowImage(wndname,image);
  62.         cvWaitKey(DELAY);
  63.     }
  64.     for (i = 0; i< NUMBER; i++)
  65.     {
  66.         pt1.x=cvRandInt(&rng) % width3 - width;
  67.         pt1.y=cvRandInt(&rng) % height3 - height;
  68.         sz.width =cvRandInt(&rng)%200;
  69.         sz.height=cvRandInt(&rng)%200;
  70.         angle = (cvRandInt(&rng)%1000)*0.180;
  71.         cvEllipse( image, pt1, sz, angle, angle - 100, angle + 200,
  72.                    random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );
  73.         cvShowImage(wndname,image);
  74.         cvWaitKey(DELAY);
  75.     }
  76.     for (i = 0; i< NUMBER; i++)
  77.     {
  78.         pt[0][0].x=cvRandInt(&rng) % width3 - width;
  79.         pt[0][0].y=cvRandInt(&rng) % height3 - height;
  80.         pt[0][1].x=cvRandInt(&rng) % width3 - width;
  81.         pt[0][1].y=cvRandInt(&rng) % height3 - height;
  82.         pt[0][2].x=cvRandInt(&rng) % width3 - width;
  83.         pt[0][2].y=cvRandInt(&rng) % height3 - height;
  84.         pt[1][0].x=cvRandInt(&rng) % width3 - width;
  85.         pt[1][0].y=cvRandInt(&rng) % height3 - height;
  86.         pt[1][1].x=cvRandInt(&rng) % width3 - width;
  87.         pt[1][1].y=cvRandInt(&rng) % height3 - height;
  88.         pt[1][2].x=cvRandInt(&rng) % width3 - width;
  89.         pt[1][2].y=cvRandInt(&rng) % height3 - height;
  90.         cvPolyLine( image, pt, arr, 2, 1, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );
  91.         cvShowImage(wndname,image);
  92.         cvWaitKey(DELAY);
  93.     }
  94.     for (i = 0; i< NUMBER; i++)
  95.     {
  96.         pt[0][0].x=cvRandInt(&rng) % width3 - width;
  97.         pt[0][0].y=cvRandInt(&rng) % height3 - height;
  98.         pt[0][1].x=cvRandInt(&rng) % width3 - width;
  99.         pt[0][1].y=cvRandInt(&rng) % height3 - height;
  100.         pt[0][2].x=cvRandInt(&rng) % width3 - width;
  101.         pt[0][2].y=cvRandInt(&rng) % height3 - height;
  102.         pt[1][0].x=cvRandInt(&rng) % width3 - width;
  103.         pt[1][0].y=cvRandInt(&rng) % height3 - height;
  104.         pt[1][1].x=cvRandInt(&rng) % width3 - width;
  105.         pt[1][1].y=cvRandInt(&rng) % height3 - height;
  106.         pt[1][2].x=cvRandInt(&rng) % width3 - width;
  107.         pt[1][2].y=cvRandInt(&rng) % height3 - height;
  108.         cvFillPoly( image, pt, arr, 2, random_color(&rng), line_type, 0 );
  109.         cvShowImage(wndname,image);
  110.         cvWaitKey(DELAY);
  111.     }
  112.     for (i = 0; i< NUMBER; i++)
  113.     {
  114.         pt1.x=cvRandInt(&rng) % width3 - width;
  115.         pt1.y=cvRandInt(&rng) % height3 - height;
  116.         cvCircle( image, pt1, cvRandInt(&rng)%300, random_color(&rng),
  117.                   cvRandInt(&rng)%10-1, line_type, 0 );
  118.         cvShowImage(wndname,image);
  119.         cvWaitKey(DELAY);
  120.     }
  121.     for (i = 1; i< NUMBER; i++)
  122.     {
  123.         pt1.x=cvRandInt(&rng) % width3 - width;
  124.         pt1.y=cvRandInt(&rng) % height3 - height;
  125.         cvInitFont( &font, cvRandInt(&rng) % 8,
  126. (cvRandInt(&rng)%100)*0.05+0.1,
  127.  (cvRandInt(&rng)%100)*0.05+0.1, 
  128. (cvRandInt(&rng)%5)*0.1, cvRound(cvRandInt(&rng)%10), 
  129. 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. }