1
座標/半徑我有適用於圖像一些轉換,用於檢測圓OpenCV的獲得在像素
(GaussianBlur->cvtColor(gray)->canny->HoughCircles
)
,並作爲結果我得到vector<Vec3f> circles;
陣列的代碼。
如果我繪製OpenCV的結果:
cv::Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
int radius = cvRound(circles[i][2]);
//circle center
circle(originalMat, center, 3, Scalar(0,255,0), -1, 8, 0);
// circle outline
circle(originalMat, center, radius, Scalar(0,0,255), 1, 8, 0);
它看起來不錯(見附表形象,藍色圓圈)
但如果我試圖不通過OpenCV的繪製圖像,我有另一圓(或有時橢圓形)(紅圈附件圖片上):
UIGraphicsBeginImageContext(image.size); //the same size as original
[image drawAtPoint:CGPointZero];
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor redColor] setStroke];
CGRect circleRect = CGRectMake(circles[i][0] - circles[i][2] ,
circles[i][1] - circles[i][2],
circles[i][0] + circles[i][2],
circles[i][1] + circles[i][2]
);
circleRect = CGRectInset(circleRect, 5, 5);
CGContextStrokeEllipseInRect(ctx, circleRect);
UIImage *retImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
爲什麼會發生?如何獲得像素中的座標和半徑大小以正確繪製它?
P.S:UIImage
到Mat
談話,我得到的形式documentation
是的,它幫助,謝謝。圓中心是好的,但半徑有點小(我已經刪除舍入)比原:( – user5599807
它有點小,因爲你用'CGRectInset' – Miki
想念它,謝謝! – user5599807