ホームページ  >  記事  >  バックエンド開発  >  C++ で簡単な画像処理プログラムを作成するにはどうすればよいですか?

C++ で簡単な画像処理プログラムを作成するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-11-03 09:58:50795ブラウズ

C++ で簡単な画像処理プログラムを作成するにはどうすればよいですか?

この記事では、C で簡単な画像処理プログラムを作成する方法を学びます。画像の読み取りからフィルターの適用、画像の保存までの基本をすべて説明します。

画像処理プログラムの作成を開始する前に、OpenCV ライブラリをインストールする必要があります。 OpenCV は、高品質の画像処理アプリケーションの作成に役立つ豊富な機能を備えた人気のあるコンピューター ビジョン ライブラリです。

ステップ 1: 画像をロードする

画像をロードするには、Mat という OpenCV オブジェクトを宣言する必要があります。以下は、ファイルから画像をロードするコードです:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    waitKey(0);
    return 0;
}

上記のコードは、OpenCV 経由で画像をロードするために使用されます。プログラムはまず、コマンド ラインから入力されたファイル名を読み取ります。ファイルが見つからない場合は、ファイルを開けないか見つからないことを示すプロンプトがユーザーに表示されます。

画像が正常に読み込まれたら、それを表示するウィンドウを作成します。 imshow 関数を使用して画像を表示し、waitKey を使用してユーザーのアクション (キーボードの任意のキーを押してウィンドウを閉じるなど) を待ちます。

ステップ 2: フィルターを適用する

画像をロードしたので、いくつかのフィルターの適用を開始できます。 OpenCV ライブラリには、ぼかし効果の追加、エッジ検出、その他の画像処理で一般的な操作など、さまざまなフィルターの適用に役立つ多くの組み込み関数が用意されています。

次のコードは、ガウスぼかしフィルターを画像に追加します。

Mat blurred_image;
GaussianBlur(image, blurred_image, Size(7,7), 0);

namedWindow("Blurred Image", WINDOW_AUTOSIZE);
imshow("Blurred Image", blurred_image);

waitKey(0);

まず、ぼかした画像を保存する Mat オブジェクトを宣言します。次に、GaussianBlur 関数を使用してガウスぼかしを適用します。関数では、最初のパラメーターはぼかされる画像、2 番目のパラメーターは結果を保存する Mat オブジェクト、3 番目のパラメーターはブラー カーネルのサイズ、4 番目のパラメーターは標準偏差です。 0に設定します。

最後に、ぼやけた画像を新しいウィンドウに表示します。

ステップ 3: 画像を保存する

画像の処理が完了したら、結果をファイルに保存できます。これは、imwrite 関数を使用して実行できます。コード例は次のとおりです。

imwrite("blur.jpg", blurred_image);

これにより、フィルタリングされたぼかし画像が blur.jpg として保存されます。

完全なコード例

#include 
#include 

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    Mat blurred_image;
    GaussianBlur(image, blurred_image, Size(7,7), 0);

    namedWindow("Blurred Image", WINDOW_AUTOSIZE);
    imshow("Blurred Image", blurred_image);

    imwrite("blur.jpg", blurred_image);

    waitKey(0);
    return 0;
}

この記事では、C と OpenCV ライブラリを使用して簡単な画像処理プログラムを作成する方法を学びました。これを拡張して、エッジ検出、シャープ化などのさらに多くのフィルターを含めることができます。

以上がC++ で簡単な画像処理プログラムを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。