2008年6月30日 星期一

OpenCV繪圖的實作-cvFillConvexPoly

這是個繪製實心多邊型的函式,OpenCV的說明上聲稱比cvFillPoly()同樣是繪製實心多邊型的函式還快,而且,這個函式的製作比cvFillPoly()還簡單.要繪製它時,當然,需要多個點,多邊型,需要三個以上的頂點,然後依著頂點順序來做多邊型的繪製,並且選定想繪製幾個頂點的多邊型,選定顏色,種類等其他的.

cvFillConvexPoly()函式的實作
#include <cv.h>
#include <highgui.h>


IplImage *Image1;

CvPoint PointArray1[6];
CvScalar Color;
int PolyVertexNumber;
int Shift;
int main()
{
    CvSize ImageSize1 = cvSize(1000,700);
    Image1 = cvCreateImage(ImageSize1, IPL_DEPTH_8U, 3);

    PointArray1[0]=cvPoint(200,200);
    PointArray1[1]=cvPoint(400,150);
    PointArray1[2]=cvPoint(650,230);
    PointArray1[3]=cvPoint(800,300);
    PointArray1[4]=cvPoint(900,550);
    PointArray1[5]=cvPoint(100,500);

    CvScalar Color=CV_RGB(255,0,0);
    PolyVertexNumber=6;
    Shift=0;

    cvFillConvexPoly(Image1,PointArray1,PolyVertexNumber,Color,CV_AA,Shift);

    cvNamedWindow("FillConvexPoly",0);
    cvShowImage("FillConvexPoly",Image1);
    cvWaitKey(0);
}

執行結果:
(1)PolyVertexNumber=3

(2)PolyVertexNumber=4

(2)PolyVertexNumber=5

(2)PolyVertexNumber=6


這個繪圖函式真的比cvFillPoly()簡單的多了!內部使用的演算法也不一樣,總而言之,給定點座標集合,多邊型頂點數,顏色,線條種類,比例縮放,就可以繪出多邊型了,而執行結果,表示的是不同多邊型頂點數的執行結果.由圖可知,它的演算法是照著點陣列的排列的順序來的.

cvFillConvexPoly()
利用點陣列集合繪製多邊型,並且給它多邊型的頂點數,它會依照陣列的順序去製作多邊型圖案如果順序給的繪不出多邊型,則會亂掉.
cvFillConvexPoly(IplImage資料結構,CvPoint陣列,多邊型頂點數,CvScalar顏色,線條類型,比例縮放數據)



0 意見:

Copyright 2008-2009,yester