Я не использую C или C ++ слишком часто, но я о
чтобы завершить компиляцию файла, который обнаруживает лица с помощью opencv, который является копией файла c ++, который уже делает это для окон, предназначен для тегирования в социальной сети, следующая ошибка, которую я получаю с кодом при компиляции, следующая
In function 'main':
warning: assignment from incompatible pointer type
int main( int argc, char** argv[])
{
char* dea;
int i=0;
while(i<argc)
{
if(i==1){
dea=argv[i];
}
i++;
}
char image[400],temp_image[400];IplImage *img,*temp_img;
int key;storage = cvCreateMemStorage( 0 );
cascade = ( CvHaarClassifierCascade* )cvLoad( face_cascade, 0, 0, 0 );
if( !(cascade) )
{
fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
return -1;
}sprintf(image,"dimage%d.jpg");
img=cvLoadImage(dea,0);
temp_img=cvLoadImage(dea,0);
if(!img)
{
printf("Could not load image file and trying once again: %s\n",image);
}
printf("\n curr_image = %s",image);
detectFacialFeatures(img,temp_img);cvReleaseHaarClassifierCascade( &cascade );
cvReleaseMemStorage( &storage );
cvReleaseImage(&img);
cvReleaseImage(&temp_img);return 0;
}
Я хочу иметь возможность отправлять в argv [] в качестве первого аргумента после исполняемого файла местоположение фотографии, подлежащей анализу, поэтому я попытался с помощью цикла присвоить char * dea; значение argv [i], когда i равно 1.
Я бы сделал dea = argv [1]
но это выдает ошибку другого рода, поэтому я выбрал этот подход.
Аргв должен быть объявлен как char **argv
, или же char *argv[]
, но вы объявили это как char **argv[]
это тройной указатель.
Вы пытаетесь назначить char *
к char
,
Я думаю, что ваши аргументы объявлены неправильно
так должно быть
char** args
или же
char* args[]
не
char** args[]
dea=argv[i];
Вы назначаете двойной указатель char** argv[]
к одному указателю char* dea
, Если вы хотите присвоить значение argv для dea, тогда возьмите dea в качестве двойного указателя.
char** dea;
dea[i] = argv[i];