Page 77 - 人工智能——为机器植入智慧
P. 77
项目五 智能支付
(1) 完成边缘检测算法。
图 5-6
(2) 完成霍夫变换,实现餐盘形状识别和直径大小判定。
霍夫变换主要代码:
Point cPoint[100];
int arr = 0;
Mat edges;
Mat img = imread("d:\\test.jpg");
char mstr[100];
strcpy(mstr, "start:");
cvtColor(img, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 2, 2);
vector<Vec3f> circles;
HoughCircles(edges, circles, CV_HOUGH_GRADIENT, 1.5, 10, 200, 100, 0, 0); // 霍夫变换
for (size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
if (searchPoint(center, &cPoint[0], &arr))
{
int radius = cvRound(circles[i][2]);
char info[10];
circle(img, center, 3, Scalar(0, 255, 0), -1, 8, 0);
circle(img, center, radius, Scalar(155, 50, 255), 3, 8, 0);
itoa(radius, info, 10);
strcat(mstr, info);
strcat(mstr, ";");
}
}
63

