2008年7月1日 星期二

OpenCV繪圖的實作-其他繪圖函式

這邊用OpenCV內"cvcompat.h"的函式庫(Computer Vision compatibility)跟前面的繪圖函式同質性很高,因此就簡單的介紹.

"cvcompat.h"函式庫繪圖實作
#include <cv.h>
#include <highgui.h>


IplImage *Image1;
CvPoint PointArray1[3];
CvPoint *PointArray[2]={&PointArray1[0]};
int PolyVertexNumber[1]={3};

int main()
{
    int PositionX=200;
    int PositionY=300;
    int Color=255;
    int Shift=0;

    CvSize ImageSize1 = cvSize(1000,700);
    Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,3);
    cvNot(Image1,Image1);

    cvLineAA(Image1, cvPoint(PositionX+130,PositionY+50),cvPoint(PositionX+130,PositionY+130),Color,Shift);
    cvLineAA(Image1, cvPoint(PositionX+220,PositionY+75),cvPoint(PositionX+285,PositionY+75),Color,Shift);
    cvLineAA(Image1, cvPoint(PositionX+320,PositionY+50),cvPoint(PositionX+320,PositionY+100),Color,Shift);
    cvLineAA(Image1, cvPoint(PositionX+376,PositionY+62),cvPoint(PositionX+376,PositionY+100),Color,Shift);
    cvCircleAA(Image1,cvPoint(PositionX+50,PositionY+50),50,Color,Shift);
    cvEllipseAA(Image1,cvPoint(PositionX+130,PositionY+75),cvSize(25,60),90,-180,0,Color,Shift);
    cvEllipseAA(Image1,cvPoint(PositionX+252,PositionY+75),cvSize(25,32),90,-90,225,Color,Shift);
    cvEllipseAA(Image1,cvPoint(PositionX+348,PositionY+75),cvSize(25,32),90,-60,60,Color,Shift);
    cvEllipseAA(Image1,cvPoint(PositionX+450,PositionY+50),cvSize(50,45),90,-60,225,Color,Shift);

    PointArray1[0]=cvPoint(PositionX+505,PositionY+0);
    PointArray1[1]=cvPoint(PositionX+550,PositionY+100);
    PointArray1[2]=cvPoint(PositionX+595,PositionY+0);

    cvPolyLineAA(Image1,PointArray,PolyVertexNumber,1,0,Color,Shift);

    cvNamedWindow("OpenCV",1);
    cvShowImage("OpenCV",Image1);
    cvWaitKey(0);
}

執行結果:


上面的繪圖函式程式設計,不再多做變數的宣告,直接把變數,資料結構等寫在裡面,cvLineAA(),cvCircleAA(),cvEllipseAA(),cvPolyLineAA()跟一般繪圖函式不一樣的地方,它不需要輸入線條種類了,本身就是CV_AA的種類,線條粗細也不用輸入了,被預設為1,不過可惜的是,只能輸入藍色色域的部份.

cvLineAA()
繪製直線,與cvLine()相近,不同處為不需要CV_AA參數,線條粗細數據等引數輸入.
輸入引數為目標圖形IplImage資料結構,起始點,結束點,顏色值數據(藍色或灰階),縮放比例數據.
cvLineAA(IplImage資料結構,CvPoint起始點資料結構,0~255顏色數據,CvScalar顏色,縮放比例例數據)

cvCircleAA()
繪製直線,與cvCircle()相近,不同處為不需要CV_AA參數,線條粗細數據等引數輸入.
輸入引數為目標圖形IplImage資料結構,圓心座標,圓的半徑,顏色值數據(藍色或灰階),縮放比例數據.
cvCircleAA(IplImage資料結構,CvPoint圓心座標,半徑數據,顏色數據,比例大小縮放數據)

cvEllipseAA()
繪製直線,與cvEllipse()相近,不同處為不需要CV_AA參數,線條粗細數據等引數輸入.
輸入引數為目標圖形IplImage資料結構,橢圓圓心座標,橢圓長短軸半徑,旋轉角度,繪圖起點,終點,顏色值數據(藍色或灰階),縮放比例數據.
cvEllipseAA(IplImage資料結構,CvPoint橢圓圓心,CvSize長短軸,旋轉角度數據,繪圖起點數據,繪圖終點數據,顏色數據,比例大小縮放數據)

cvPolyLineAA()
繪製直線,與cvEllipse()相近,不同處為不需要CV_AA參數,線條粗細數據等引數輸入.
輸入引數為目標圖形IplImage資料結構,點集合二維陣列,每群點集合數量分配,多邊型區塊數,是否為循環,顏色值數據(藍色或灰階),縮放比例數據.
cvPolyLine(IplImage資料結構,CvPoint二維陣列,多邊型的點數分配數據,要繪製幾個多邊型數據,是否循環數據,顏色數據,比例縮放數據)



0 意見:

Copyright 2008-2009,yester