我不经常使用 C 或 C++,但我即将完成编译一个使用 opencv 检测人脸的文件,该文件是已经为 Windows 执行的 c++ 文件的副本,用于在社交网络中进行标记,错误我get with code when compile 是下一个
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]
但这会引发另一种错误,所以我采用了这种方法。