void CALEXDlg::fillArbitaryRectangle(IplImage* src,CvPoint pt1,CvPoint pt2,CvPoint pt3,CvPoint pt4)
{
int arr[1];
arr[0] = 4;
CvPoint ** pt = new CvPoint*[1];
pt[0] = new CvPoint[4];
pt[0][0] = pt1;
pt[0][1] = pt2;
pt[0][2] = pt3;
pt[0][3] = pt4;
cvPolyLine( src, pt, arr, 1, 1, CV_RGB(255,97,0));
cvFillPoly(src,pt,arr,1,CV_RGB(0,0,0));
}
给出子函数,直接调用或者自己写一个。输入的src要是一个三通道的图像
注意,这里给的是四个点的任意四边形填充和圈定。四个点是区分前后关系的,但是不管顺逆时针。
参考文献
http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/core/doc/drawing_functions.html?highlight=cvpolyline#void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int isClosed, CvScalar color, int thickness, int lineType, int shift)