📄 drawing.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 + -