#opencv #undefined #identifier
#opencv #не определено #идентификатор
Вопрос:
У меня есть цикл for, например, так
for (int i = 0; i < circles->total; i )
{
// round the floats to an int
float* p = (float*)cvGetSeqElem(circles, i);
cv::Point center(cvRound(p[0]), cvRound(p[1]));
int radius = cvRound(p[2]);
int num_red = 0;
//uchar* ptr;
//ptr = cvPtr2D(img, center.y, center.x, NULL);
//printf("B: %d G: %d R: %dn", ptr[0],ptr[1],ptr[2]);
CvScalar s;
s = cvGet2D(img,center.y, center.x);//colour of circle
printf("B: %f G: %f R: %fn",s.val[0],s.val[1],s.val[2]);
if (s.val[2]<=255 amp;amp; s.val[2]>=230 amp;amp; s.val[1]<=40 amp;amp; s.val[1]>=0 amp;amp; s.val[0] <=40 amp;amp; s.val[0]>=0)
{
printf("Red Balln");
num_red ;
}
который работает. но позже в моем коде я попытался использовать s.val[]
и num_red
, как это
int count_red = 0;
int red_pot = 0;
if(s.val[2]<=255 amp;amp; s.val[2]>=230 amp;amp; s.val[1]<=40 amp;amp; s.val[1]>=0 amp;amp; s.val[0] <=40 amp;amp; s.val[0]>=0)
count_red ;//count the reds detected
num_red - count_red = red_pot;//originally detected - whats left = whats potted
я получаю необъявленную ошибку идентификатора для ‘s’. Слева от .val должен иметь class / struct и ‘num_red’: необъявленный идентификатор. Я не понимаю, почему программа не может прочитать эти значения сверху вниз. кто-нибудь может помочь?
Ответ №1:
Вы создаете s
внутри for
цикла. Поэтому, как только for
цикл завершается, s
он выходит за рамки. Вам необходимо создать переменную в области, которая включает в себя все области, в которых вы собираетесь получить к ней доступ.
Комментарии:
1. ах. итак, если я объявлю все, скажем, после «int main», тогда это должно сработать? Спасибо