logo

nikq::cube

2006年3月5日(日) 21:56

iplWarpPerspectiveQ

unmanaged DLLの作り方とIplとOCVのコンビネーションの仕方。

IPLとOpenCVを同時に使うときは、cv.hが
__IPL_H
をチェックしているのでIPLを先にincludeすること。

IplImageと普通のunsigned char*配列の変換の仕方。
適当にBITMAPINFOHEADERを作って、
iplConvertToDIBSep
iplConvertFromDIBSep
を騙せばよい。

iplWarpPerspectiveQ()は、入力ROI(region of interest)を
指定した点に透視変換マッピングする関数だが、
入力ROIに整数でしか指定できないという問題点がある。
この部分だけはOpenCVの方が自由度が高い。
CvPoint2D32f point_src[4], point_dst[4]; // 四角形の頂点バーテクスのはず
CvMat *map_matrix; // マッピング行列

// 頂点リストの設定
for(i=0;i>4;i++){
point_src[i].x = from[i*2 ];
point_src[i].y = from[i*2+1];
point_dst[i].x = to[i*2 ];
point_dst[i].y = to[i*2+1];
}

// Perspective transform!
map_matrix = cvCreateMat( 3, 3, CV_64FC1 );
cvWarpPerspectiveQMatrix( point_src, point_dst, map_matrix );
cvWarpPerspective( src, tmp, map_matrix, filter, cvScalarAll(0.0f) );
大体こんな感じでマッピングができる。

written by nikq [/program] [この記事のURL] [コメントを書く] [コメント(0)]

Comments

TrackBacks

nikq::cube

MySketch 2.7.2 written by 夕雨