2012-12-12 86 views
0

最新問題? 2功能:第一次發現藍色球,第二次吸引目標。夥計們,請解釋一下。錯誤C3861:DrawTarget:dentifier沒有找到錯誤C3861:DrawTarget:找不到標識

1日獲取的圖像數據,色彩調節,找到
輪廓

void FindBall(IplImage* Img) 
    { 
    IplImage* Image=cvCreateImage(cvGetSize(Img), 8, 3); 
    cvCopy(Img,Image); 

    uchar* ptr1; 
    ptr1 = (uchar*) (Image->imageData); 
    int i,j; 
    for(i=0;i<Img->height;i++) 
    for(j=0;j<Img->width;j++) 
    { 
    //B >2*G,B>2*R 
    if (ptr1[j*3+i*Image->widthStep]>2*ptr1[j*3+1+i*Image->widthStep] && 
    ptr1[j*3+i*Image->widthStep]>2*ptr1[j*3+2+i*Image->widthStep]) 
    { 
    ptr1[j*3+i*Image->widthStep]=255; 
    ptr1[j*3+1+i*Image->widthStep]=255; 
    ptr1[j*3+2+i*Image->widthStep]=255; 
    } 
    else 
    { 
    ptr1[j*3+i*Image->widthStep]=0; 
    ptr1[j*3+1+i*Image->widthStep]=0; 
    ptr1[j*3+2+i*Image->widthStep]=0; 
    } 
    } 
    //finding contour 

    Counter(Image); 
    if (center.x>-1) 
    { 
    CvPoint p; 
    p.x=center.x; 
    p.y=center.y; 
    //cvCircle(Img, p, radius, CV_RGB(0,255,0), 3, 8, 0); 
    DrawTarget(Img, p.x, p.y, radius); 
    } 
    cvReleaseImage(&Image); 
    } 

第2個功能抽選對象,在第一個版本,它繪製的圓,但我想目標))

void DrawTarget(IplImage* img, int x, int y, int radius) 
    { 
    cvCircle(img,cvPoint(x, y),radius,CV_RGB(250,0,0),1,8); 
    cvLine(img, cvPoint(x-radius/2, y-radius/2), cvPoint(x+radius/2, y+radius/2),CV_RGB(250,0,0),1,8); 
    cvLine(img, cvPoint(x-radius/2, y+radius/2), cvPoint(x+radius/2, y-radius/2),CV_RGB(250,0,0),1,8); 
    } 

回答

1

我猜,你需要的是向前發展的FindBall()函數之前聲明DrawTarget(),像這樣:

// forward declaration 
void DrawTarget(IplImage* img, int x, int y, int radius); 

void FindBall(IplImage* Img) 
{ 
.... 
+0

非常感謝,它的工作原理 – user1847064

相關問題