我不经常使用C或C ++,但我是关于 完成编译一个用opencv检测面的文件,这个文件是已经为windows做的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;当我是1时,argv [i]的值。
我会做dea = argv [1]
但是这引发了一种不同的错误,所以我采用了这种方法。
答案 0 :(得分:9)
应将Argv声明为char **argv
或char *argv[]
,但您将其声明为char **argv[]
triple 指针。
您正在尝试将char *
分配给char
。
答案 1 :(得分:3)
我认为你的args声明错了 它应该是
char** args
或
char* args[]
不是
char** args[]
答案 2 :(得分:0)
dea=argv[i];
您正在为单个指针char** argv[]
分配双指针char* dea
。如果你想将argv的值赋给dea,那么将dea作为双指针。
char** dea;
dea[i] = argv[i];