2011-10-05 38 views
0

OpenCVでCvBox2Dをどのように描画しますか? cvRectangleに類似の機能はありますか?opencvを描く?

コード例はCvBox2DためcvRectangleのような機能がありません

おかげ

+0

cvRectangle関数がある場合は、なぜ同じようにしたいですか? – YAHOOOOO

+0

cvRectangleは長方形のみのため cvBox2DはcvRectangleと互換性がありません – fdh

答えて

1

をいただければ幸いです。これはCvBox2Dの構造である:

typdef struct { 
CvPoint2D32f center; 
CvSize2D32f size; 
float angle; 
} CvBox2D; 

あなたは、長方形のポイントを取得し、ラインのセットとして四角形を描画するためにcvBoxPointsを使用することができます。

void cvBoxPoints(CvBox2D box, CvPoint2D32f pt[]); 

cvPolyLineを使用して、線をより簡単に描画することもできます。

void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int isClosed, CvScalar color, int thickness=1, int lineType=8, int shift=0) 
+0

ありがとうございますが、私のCvBox2Dの1つだけが表示されています。どんな考え? (私は2つの異なるボックスでcvPolyLineとcvBoxPointsを2回使用しました) – fdh

+0

あなたのコードをここに置いたり、別の質問に投稿するともっと助けてくれるかもしれません。 – Adrian

+0

私はそれを働かせる気にしないでくださいありがとう – fdh

0

iplimageで回転した矩形を描画する機能。

void DrawRotatedRect(IplImage * iplSrc,CvBox2D rect,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0)); 

void DrawRotatedRect(IplImage * iplSrc,CvBox2D rect,CvScalar color, int thickness, int line_type, int shift) 
{ 
CvPoint2D32f boxPoints[4]; 
cvBoxPoints(rect, boxPoints); 
cvLine(iplSrc,cvPoint((int)boxPoints[0].x, (int)boxPoints[0].y),cvPoint((int)boxPoints[1].x, (int)boxPoints[1].y),color,thickness,line_type,shift); 
cvLine(iplSrc,cvPoint((int)boxPoints[1].x, (int)boxPoints[1].y),cvPoint((int)boxPoints[2].x, (int)boxPoints[2].y),color,thickness,line_type,shift); 
cvLine(iplSrc,cvPoint((int)boxPoints[2].x, (int)boxPoints[2].y),cvPoint((int)boxPoints[3].x, (int)boxPoints[3].y),color,thickness,line_type,shift); 
cvLine(iplSrc,cvPoint((int)boxPoints[3].x, (int)boxPoints[3].y),cvPoint((int)boxPoints[0].x, (int)boxPoints[0].y),color,thickness,line_type,shift); 
}