69,381
社区成员
发帖
与我相关
我的任务
分享
void hough(IplImage*orl, int clr)
{
clr = clr - 1;
clr = clr * 2;
int flag = 0;
CvPoint cen;
int max_pix = 0;
IplImage *andl = cvCreateImage(cvGetSize(orl), 8, 3),
*srccopyl = cvCreateImage(cvGetSize(orl), 8, 3),
IplImage *roil = cvCreateImage(cvGetSize(orl), 8, 1),
*maskl = cvCreateImage(cvGetSize(orl), 8, 1),
*smol = cvCreateImage(cvGetSize(orl), 8, 1),
*pixl = cvCreateImage(cvGetSize(orl), 8, 1),
cvCopy(orl, srccopyl, 0);
cvSetZero(maskl);
cvCvtColor(orl, smol, CV_RGB2GRAY);
CvMemStorage* storagel = cvCreateMemStorage(0);
CvSeq* resultsl = cvHoughCircles(smol, storagel, CV_HOUGH_GRADIENT, 2, 20, 100, 100, 30, 45);
for (int i = 0; i < resultsl->total; i++) {
cvSetZero(andl);
cvSetZero(roil);
cvSetZero(pixl);
float*pl = (float*)cvGetSeqElem(resultsl, i);
CvPoint ptl = cvPoint(cvRound(pl[0]), cvRound(pl[1]));
cvCircle(orl, ptl, cvRound(pl[2]), CV_RGB(0xff, 0x00, 0x00), 3, 8, 0);
cvCircle(roil, ptl, cvRound(pl[2]), CV_RGB(0xff, 0xff, 0xff), -1, 8, 0);
cvAnd(srccopyl, srccopyl, andl, roil);
cvOr(maskl, roil, maskl,0);
cvCvtColor(andl, andl, CV_BGR2HSV);
cvInRangeS(andl, color[clr], color[clr + 1], pixl);
int count_pixl = cvCountNonZero(pixl);
if (max_pix < count_pixl) {
max_pix = count_pixl;
cen = ptl;
flag = 1;
}
}
show_imgl = orl; //show_imgl是全局变量
cvReleaseImage(&andl); cvReleaseImage(&srccopyl); cvReleaseImage(&roil); cvReleaseImage(&maskl); cvReleaseImage(&smol); cvReleaseImage(&pixl);
cvReleaseMemStorage(&storagel);
// cvReleaseMemStorage(&resultsl->storage); cvReleaseMemStorage(&resultsr->storage);
}
void hough(IplImage*orl, int clr)
{
clr = clr - 1;
clr = clr * 2;
int flag = 0;
CvPoint cen;
int max_pix = 0;
IplImage *andl = cvCreateImage(cvGetSize(orl), 8, 3),
*srccopyl = cvCreateImage(cvGetSize(orl), 8, 3);
IplImage *roil = cvCreateImage(cvGetSize(orl), 8, 1),
*maskl = cvCreateImage(cvGetSize(orl), 8, 1),
*smol = cvCreateImage(cvGetSize(orl), 8, 1),
*pixl = cvCreateImage(cvGetSize(orl), 8, 1);
cvReleaseImage(&andl); cvReleaseImage(&srccopyl); cvReleaseImage(&roil); cvReleaseImage(&maskl); cvReleaseImage(&smol); cvReleaseImage(&pixl);
}