0

有什么问题?2功能:第1个找到蓝球,第2个绘制目标。请各位大侠解释一下。错误 C3861:DrawTarget:未找到标识符

1st获取图像数据,颜色条件,寻找
轮廓

  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 );
  }

第二个功能绘图目标,在第一个版本中它绘制圆,但我想要目标))

  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);
  }
4

1 回答 1

1

我想,您所需要的只是在 FindBall() 函数之前声明 DrawTarget(),如下所示:

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

void FindBall(IplImage* Img)
{
....
于 2012-12-12T05:53:27.360 回答