-1
int main ( int argc, char** argv )
{
    cout << "OpenCV Automatic Number Plate Recognition\n";
    char* filename;
    Mat input_image;
    //Check if user specify image to process
    if(argc >= 2 )
    {
        filename= argv[1];
        //load image  in gray level
        input_image=imread(filename,1);
    }else{
        printf("Use:\n\t%s image\n",argv[0]);
        return 0;
    }        

    string filename_whithoutExt=getFilename(filename);

これはコードです。コードはエラーなしで実行されますが、常にここに移動して 0 を返します

        printf("Use:\n\t%s image\n",argv[0]);
        return 0;

処理する画像が取得されないのはなぜですか

編集

my folder test を処理するように指定すると、次のランタイム エラーが発生します。

ここに画像の説明を入力

argv < 2 で実行すると、else 条件を実行することを意味します。構成設定に移動すると、-> デバッグ -> コマンドライン引数 ->.\test テスト フォルダーに画像が含まれます

C++ と VS の初心者

4

1 に答える 1

3

このプログラムをどのように実行しますか?

プログラムが引数なしで、または単一の引数で呼び出された場合:

./myprogram

また ./myprogram img1

ここで終わります

printf("Use:\n\t%s image\n",argv[0]);

2 つ以上の引数がある場合にのみ、最初の条件に入ります。

./myprogram img1 img2

プロジェクト (IDE) で呼び出される引数を指定するか、ターミナル/コンソールから実行できます。

Visual Studio 2010 でコマンド ライン引数を渡しますか?


あなたはコメントで言った:

フォルダー test またはプロジェクトから画像を取得し、それらを入力として取得することを期待しています

しかし、あなたが実際にしていることは矛盾しています。ファイルを処理したい場合は、プログラム呼び出しのパラメーターをチェックせずに実行できます (なぜそれらが必要なのか、何を達成したいのかは不明です)。

現時点では、ファイルの 1 つの正しい名前である img1 を使用してコマンドラインから試してください。 ./myprogram img1 img2これは実行を試みimread()ます。または、IDEでimg1、img2を指定します。その方法は、提供されているリンクで確認できます。

于 2013-09-07T11:00:48.443 に答える