⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawing.c

📁 OpenCV的各类例子
💻 C
字号:
/* 	程序名:drawing..c功能:展示OpenCV的图像绘制功能*/#include "cv.h"#include "highgui.h"#include <stdlib.h>#include <stdio.h>#define NUMBER 100#define DELAY 5char wndname[] = "Drawing Demo";CvScalar random_color(CvRNG* rng){    int icolor = cvRandInt(rng);    return CV_RGB(icolor&255, (icolor>>8)&255, (icolor>>16)&255);}int main( int argc, char** argv ){    int line_type = CV_AA; // change it to 8 to see non-antialiased graphics    int i;    CvPoint pt1,pt2;    double angle;    CvSize sz;    CvPoint  ptt[6];    CvPoint* pt[2];    int  arr[2];    CvFont font;    CvRNG rng;    int width = 1000, height = 700;    int width3 = width*3, height3 = height*3;    CvSize text_size;    int ymin = 0;    // Load the source image    IplImage* image = cvCreateImage( cvSize(width,height), 8, 3 );    IplImage* image2;    // Create a window    cvNamedWindow(wndname, 1 );    cvZero( image );    cvShowImage(wndname,image);    rng = cvRNG((unsigned)-1);    pt[0] = &(ptt[0]);    pt[1] = &(ptt[3]);    arr[0] = 3;    arr[1] = 3;    for (i = 0; i< NUMBER; i++)    {        pt1.x=cvRandInt(&rng) % width3 - width;        pt1.y=cvRandInt(&rng) % height3 - height;        pt2.x=cvRandInt(&rng) % width3 - width;        pt2.y=cvRandInt(&rng) % height3 - height;        cvLine( image, pt1, pt2, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 0; i< NUMBER; i++)    {        pt1.x=cvRandInt(&rng) % width3 - width;        pt1.y=cvRandInt(&rng) % height3 - height;        pt2.x=cvRandInt(&rng) % width3 - width;        pt2.y=cvRandInt(&rng) % height3 - height;        cvRectangle( image,pt1, pt2, random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 0; i< NUMBER; i++)    {        pt1.x=cvRandInt(&rng) % width3 - width;        pt1.y=cvRandInt(&rng) % height3 - height;        sz.width =cvRandInt(&rng)%200;        sz.height=cvRandInt(&rng)%200;        angle = (cvRandInt(&rng)%1000)*0.180;        cvEllipse( image, pt1, sz, angle, angle - 100, angle + 200,                   random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 0; i< NUMBER; i++)    {        pt[0][0].x=cvRandInt(&rng) % width3 - width;        pt[0][0].y=cvRandInt(&rng) % height3 - height;        pt[0][1].x=cvRandInt(&rng) % width3 - width;        pt[0][1].y=cvRandInt(&rng) % height3 - height;        pt[0][2].x=cvRandInt(&rng) % width3 - width;        pt[0][2].y=cvRandInt(&rng) % height3 - height;        pt[1][0].x=cvRandInt(&rng) % width3 - width;        pt[1][0].y=cvRandInt(&rng) % height3 - height;        pt[1][1].x=cvRandInt(&rng) % width3 - width;        pt[1][1].y=cvRandInt(&rng) % height3 - height;        pt[1][2].x=cvRandInt(&rng) % width3 - width;        pt[1][2].y=cvRandInt(&rng) % height3 - height;        cvPolyLine( image, pt, arr, 2, 1, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 0; i< NUMBER; i++)    {        pt[0][0].x=cvRandInt(&rng) % width3 - width;        pt[0][0].y=cvRandInt(&rng) % height3 - height;        pt[0][1].x=cvRandInt(&rng) % width3 - width;        pt[0][1].y=cvRandInt(&rng) % height3 - height;        pt[0][2].x=cvRandInt(&rng) % width3 - width;        pt[0][2].y=cvRandInt(&rng) % height3 - height;        pt[1][0].x=cvRandInt(&rng) % width3 - width;        pt[1][0].y=cvRandInt(&rng) % height3 - height;        pt[1][1].x=cvRandInt(&rng) % width3 - width;        pt[1][1].y=cvRandInt(&rng) % height3 - height;        pt[1][2].x=cvRandInt(&rng) % width3 - width;        pt[1][2].y=cvRandInt(&rng) % height3 - height;        cvFillPoly( image, pt, arr, 2, random_color(&rng), line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 0; i< NUMBER; i++)    {        pt1.x=cvRandInt(&rng) % width3 - width;        pt1.y=cvRandInt(&rng) % height3 - height;        cvCircle( image, pt1, cvRandInt(&rng)%300, random_color(&rng),                  cvRandInt(&rng)%10-1, line_type, 0 );        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    for (i = 1; i< NUMBER; i++)    {        pt1.x=cvRandInt(&rng) % width3 - width;        pt1.y=cvRandInt(&rng) % height3 - height;        cvInitFont( &font, cvRandInt(&rng) % 8,(cvRandInt(&rng)%100)*0.05+0.1, (cvRandInt(&rng)%100)*0.05+0.1, (cvRandInt(&rng)%5)*0.1, cvRound(cvRandInt(&rng)%10), line_type );        cvPutText( image, "Testing text rendering!", pt1, &font, random_color(&rng));        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX, 3, 3, 0.0, 5, line_type );    cvGetTextSize( "OpenCV forever!", &font, &text_size, &ymin );    pt1.x = (width - text_size.width)/2;    pt1.y = (height + text_size.height)/2;    image2 = cvCloneImage(image);    for( i = 0; i < 255; i++ )    {        cvSubS( image2, cvScalarAll(i), image, 0 );        cvPutText( image, "OpenCV forever!", pt1, &font, CV_RGB(255,i,i));        cvShowImage(wndname,image);        cvWaitKey(DELAY);    }    // Wait for a key stroke; the same function arranges events processing    cvWaitKey(0);    cvReleaseImage(&image);    cvReleaseImage(&image2);    cvDestroyWindow(wndname);return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -