沒有找到更精確的方法,Opencv中包括畫橢圓,其中心的位置也是像素級的,怎麼達到亞像素精度呢?
下面用畫小圓圈的方法來畫點,點的座標即爲圓心,給定一個較小的半徑,就可以用這個小圓圈表示點了。
畫圓圈的函數:
void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line_type=8, int shift=0 );
例子:
CvSize sz;//圖像尺寸
sz.height =600;
sz.width = 800;
image = cvCreateImage(sz,IPL_DEPTH_8U ,0);
//存儲圖像
cvNamedWindow("image1",CV_WINDOW_AUTOSIZE);
cvSaveImage("image1.jpg",image);
//cvShowImage("image1",image);
//畫30個點在圖上,其中iamge_ellipse1是30*2的矩陣,包含了30個點的圖像座標。
for(int i=0;i<30;i++)
{
CvPoint centerpoint;
centerpoint.x=int(cvGetReal2D(image_ellipse1,i,0));
centerpoint.y=int(cvGetReal2D(image_ellipse1,i,1));
cvCircle( image, centerpoint ,3 , CV_RGB(0,255,0),1, 8, 3 );
}
cvNamedWindow("image1",CV_WINDOW_AUTOSIZE);
cvSaveImage("image1.jpg",image);
cvShowImage("image1",image);
cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("image1");