2008年7月5日 星期六

資料結構操作與運算-CvPoint相關資料結構

這邊要介紹的,是所有跟點(Point)相關的資料結構,也可以把它當做是座標的表達方式,被包在"cxtype.h"裡,最常用的點資料結構為CvPoint及CvPoint2D32f,可以在許多演算法應用上看的到.

CvPoint相關資料結構
#include <cv.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    CvPoint Point1=cvPoint(300,200);

    CvPoint2D32f Point2 = cvPoint2D32f(200.0,240.0);
    CvPoint2D64f Point3 = cvPoint2D64f(100.0,300.0);

    CvPoint3D32f Point4 = cvPoint3D32f(100.0,200.0,300.0);
    CvPoint3D64f Point5 = cvPoint3D64f(100.0,100.0,100.0);

    CvPoint2D32f Point6 = cvPointTo32f(Point1);
    CvPoint Point7 = cvPointFrom32f(Point6);

    printf("2 Dimension\n");
    printf("Point1 : (%d ,%d)\n",Point1.x,Point1.y);
    printf("Point2 : (%.1f,%.1f)\n",Point2.x,Point2.y);
    printf("Point3 : (%.1f,%.1f)\n",Point3.x,Point3.y);

    printf("\n3 Dimension\n");
    printf("Point4 : (%.1f,%.1f,%.1f)\n",Point4.x,Point4.y,Point4.z);
    printf("Point5 : (%.1f,%.1f,%.1f)\n",Point5.x,Point5.y,Point5.z);

    printf("\nConvert\n");
    printf("Point6 : (%.1f,%.1f)\n",Point6.x,Point6.y);
    printf("Point7 : (%d,%d)\n\n",Point7.x,Point7.y);

    system("pause");
}

執行結果:


上面的只是簡單的初始化,並且列印出來,Point6及Point7則是做簡單的轉換.

再來是CvPoint相關資料結構變數型別介紹
(1)常用的CvPoint資料結構
        

(2)OpenCV少用的CvPoint結構
    


cvPoint()
初始化CvPoint資料結構,為OpenCV常用資料結構
cvPoint(int型別row,int型別colunm)

cvPoint2D32f()
初始化CvPoint資料結構,為OpenCV常用資料結構
cvPoint2D32f(float型別row,float型別colunm)

cvPoint2D64f()
初始化cvPoint2D64f資料結構
cvPoint2D64f(double型別row,double型別colunm)

cvPoint3D32f()
初始化cvPoint3D32f資料結構
cvPoint3D32f(float型別x座標,float型別y座標,float型別z座標)

cvPoint3D64f()
初始化cvPoint3D64f資料結構
cvPoint3D64f(double型別x座標,double型別y座標,double型別z座標)

cvPointTo32f()
將CvPoint資料結構轉換成CvPoint2D32f資料結構
cvPointTo32f(CvPoint資料結構)

cvPointFrom32f()
將CvPoint2D32f資料結構轉換成CvPoint資料結構
cvPointFrom32f(CvPoint2D32f資料結構)



2 意見:

匿名 提到...

多谢你讲解了这么多东西,让我受益匪浅

訪客 提到...

我很喜歡你的講解方式簡潔易懂 希望這網站能繼續維持下去

Copyright 2008-2009,yester