问题是什么? 2功能:1发现蓝球,第2发射目标。伙计们,请解释一下。错误C3861:DrawTarget:未找到dentifier
第一次获取图像数据,颜色条件,发现
轮廓
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);
}
答案 0 :(得分:1)
我想,你需要的只是在FindBall()函数之前声明DrawTarget(),如下所示:
// forward declaration
void DrawTarget(IplImage* img, int x, int y, int radius);
void FindBall(IplImage* Img)
{
....