0

さまざまなフォルダーのさまざまなサイズの画像を、幅と高さで定義されているのと同じサイズに変換しようとしており、それらを別のフォルダーに保存するか、それらを置き換えようとしてcv::resizeimwriteます。 、しかし、サイズ変更のパラメーターにエラーが表示されるため、うまくいきません。

int count = 0;
int width = 144;
int height = 33;
vector<string>::const_iterator i;
string Dir;
for (i = all_names.begin(); i != all_names.end(); ++i)
{
    Dir=( (count < files.size() ) ? YourImagesDirectory_2 : YourImagesDirectory_3);

    Mat row_img = cv::imread( Dir +*i, 0 );

    cv::resize(row_img , width , height);
    imwrite( "D:\\TestData\\img_resize.jpg", img_resize );

    ++count;
}

この関数のサイズを変更した後:

imwrite( "D:\\TestData\\img_resize.jpg", img_resize );

1 つの画像のみをフォルダー test に保存します。フォルダー内のすべての画像が必要です

4

3 に答える 3

0

フォルダーに複数の画像を保存する方法は次のとおりです。

for (i = all_names.begin() ; i!= all_names.end() ; i++)
    {
        Dir=( (count < files.size() ) ? YourImagesDirectory : YourImagesDirectory_2);
        Mat row_img = cv::imread(Dir+*i );
        //imshow ("show",row_img);
        Mat img_resize;
        resize(row_img, img_resize, Size(144, 33));
        Mat img = img_resize;
        sprintf(buffer,"D:\\image%u.jpg",count);
        imwrite(buffer,img);
        //imwrite("D:\\TestData\\*.jpg" , img_resize);
        count++;
    }

関数を使用します。

sprintf(buffer,"D:\\image%u.jpg",count);
imwrite(buffer,img);

directory 、 name 、およびそこに保存するための imwrite を指定する場合

于 2013-09-08T18:25:48.253 に答える
0

画像のサイズを変更することが唯一の目的である場合は、IrfanView などのバッチ処理機能を備えた専用ソフトウェアを使用する方が簡単だと思います。

これがプログラミングの演習である場合は、私の答えを気にせず、他の人の答えを見てください。

ヒント: すべての画像を 1 つのファイル名で保存しているため、以前に変換した画像を新しい画像で効果的に書き換えることができます。

于 2013-09-09T08:56:27.437 に答える