【opencv】圖形的繪製

1.矩形圖像的繪製:

原函數:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0) 數組

    img就是須要繪製的圖像 函數

    pt1 and pt2表示矩形的對角線上的兩個點 字體

    color表示繪製線條的顏色 spa

    thickness表示線條的粗細程度,負數表示將其填充 指針

    line_type表示線條類型 code

    shift表示作標點的小數點位數 視頻

例如: ci

//Rectangle
int main(){
    IplImage* img_temp = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
    //繪製三個矩形
    cvRectangle(img_temp,cvPoint(10,10),cvPoint(300,300),CV_RGB(255,255,255),8,8,1);
    cvRectangle(img_temp,cvPoint(350,350),cvPoint(500,500),CV_RGB(111,111,111),-1,3,1);//填充
    cvRectangle(img_temp,cvPoint(550,550),cvPoint(620,620),CV_RGB(100,20,95),1,1,1);        cvNamedWindow("Rectangle",1);    cvShowImage("Rectangle",img_temp);    cvWaitKey(0);          cvReleaseImage(&img_temp);          cvDestroyWindow("Rectangle"); }

結果: it

2.圓形圖像的繪製:

原函數:void cvCircle(CvArr* img, CvPoint center,int radius,CvScalar color,int thickness=1 ,int line_type=8,int shift=0); class

    center爲圓心座標

    radius爲半徑

    其餘參數參照矩形函數

例子:

void circle(){
    IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
    cvCircle(img,cvPoint(250,250),200,CV_RGB(100,20,95),1,8,1);
    cvCircle(img,cvPoint(250,250),100,CV_RGB(100,20,95),-1,8,1);//填充
    cvCircle(img,cvPoint(250,250),50,CV_RGB(100,111,111),-1,8,1);
    cvNamedWindow("Circle",1);
    cvShowImage("Circle",img);
}
結果:

3.直線的繪製:

原函數:void cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1,int line_type=8, int shift=0);

    pt1 and pt2 表示線的兩端

    其餘參數見上面的說明

例子:

void line(){
    IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
    cvLine(img,cvPoint(100,250),cvPoint(400,250),CV_RGB(111,12,200),1,8,1);
    cvLine(img,cvPoint(250,100),cvPoint(250,400),CV_RGB(111,12,200),2,8,1);
    cvLine(img,cvPoint(100,100),cvPoint(400,400),CV_RGB(111,12,200),3,8,1);
    cvLine(img,cvPoint(400,100),cvPoint(100,400),CV_RGB(111,12,200),4,8,1);
    cvNamedWindow("Line",1);
    cvShowImage("Line",img);
}
結果:

4.多邊形的繪製:

原函數:void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int is_closed, CvScalar color, int thickness=1, int line_typw=8, int shift=0);

    pts 表示折線的頂點指針數組。

    npts表示折線的定點個數數組。也能夠認爲是pts指針數組的大小

    contours表示折線的線段數量。

    is_closed 圖形是否封閉

    其餘參數參照上面

例子:

void poly(){
    IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
    CvPoint curve_1[] = {10,10, 30,730, 750,730, 730,10, 400,400};
    CvPoint curve_2[] = {20,20, 20,100, 200,100};
    CvPoint* curveArr[2] = {curve_1,curve_2};
    int nCurvePts[2] = {5,3};
    int nCurves = 2;//兩個圖形
    int isCurveClosed = 1;
//兩個封閉的多邊形
    cvPolyLine(img,curveArr,nCurvePts,nCurves,isCurveClosed,CV_RGB(100,0,200),1,8,1);
    cvNamedWindow("poly",1);
    cvShowImage("poly",img);
}
結果:

5.圖像文本的輸入:

原函數:void cvInitFont(CvFont* font, int font_face,double hscale, double vscale,double shear=0,int thickness=1,int line_type=8);

  font字體結構體

  font_face表示字體名稱ID

    hscale表示字體寬度

    vscale表示字體高度。

    shear表示字體的斜度。當值爲0時 ,字符不傾斜;當值爲1.0f時,字體傾斜大約45度

    字體識別碼:

       CV_FONT_HERSHEY_SIMPLEX - 正常大小無襯線字體。

        CV_FONT_HERSHEY_PLAIN - 小號無襯線字體。

        CV_FONT_HERSHEY_DUPLEX - 正常大小無襯線字體。

        CV_FONT_HERSHEY_COMPLEX - 正常大小有襯線字體。

        CV_FONT_HERSHEY_TRIPLEX - 正常大小有襯線字體 

        CV_FONT_HERSHEY_COMPLEX_SMALL - CV_FONT_HERSHEY_COMPLEX 的小譯本。

        CV_FONT_HERSHEY_SCRIPT_SIMPLEX - 手寫風格字體

例子:

void put_text(){
    IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
    CvFont font;
    cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC,1.0,1.0,0,1,8);
    cvPutText(img,"Test Test",cvPoint(100,100),&font,CV_RGB(100,111,200));
    cvNamedWindow("put_text",1);
    cvShowImage("put_text",img);
}
結果:


That's all!!

下面就是視頻方面的部分了,繼續繼續!!!!

相關文章
相關標籤/搜索