我不经常使用 C 或 C++,但我差不多 完成编译一个用 opencv 检测人脸的文件,它是一个 c++ 文件的拷贝,已经为 windows 做了它,用于在社交网络中标记,我在编译时遇到的代码错误是下一个
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; i 为 1 时 argv[i] 的值。
我会做 dea=argv[1]
但这会引发另一种错误,所以我采用了这种方法。
最佳答案
Argv 应该声明为char **argv
,或者char *argv[]
,但是你声明为char **argv[]
是一个三重指针。
您正在尝试将 char *
分配给 char
。
关于c++ - 来自不兼容类型 c 的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15221128/