RustでOpenCVを使う
Rust は、(実行速度の点で) 迅速でより本格的なソフトウェアを作成するのに役立つプログラミング言語です。 実質的な型システムと所有権モデルによるメモリ管理を扱います。
これは静的にコンパイルされた言語です。つまり、Rust プログラムを作成すると、それをバイナリ実行可能ファイルにコンパイルでき、このファイルは Rust がインストールされていない他のシステムで実行できます。 コードを実行するにはインタープリターが必要なため、これは他の言語とは異なります。
また、エラーの処理、バグの検出、データ表現、同時実行性にも優れています。 この言語は初心者にはお勧めできません。 理解を深めるために、1つ以上のプログラミング言語に精通している必要があります。
さびコマンド
まず、いくつかのRustコマンドの基本的な概要を取得しましょう:
rustc
:rustc
は、Rust コードをコンパイルするために使用される Rust コンパイラです。 Rust の入力コードを受け取り、それをバイナリ コード/機械可読コードにコンパイルします。rustup
:rustup
コマンドは、Rust のインストールと更新に使用されます。cargo
: これは Rust ビルド システムおよびパッケージ マネージャーであり、Python のpip
、Ruby のgem
、JavaScript のnpm
などの他の言語と同様です。
残りのコマンドは、ターミナルで cargo
を使用して確認できます。
Rustをインストールする
システムに Rust が既にインストールされている場合は、この手順を省略できます。 システムに Rust がインストールされていない場合は、システムに合わせて以下の手順に従ってください。
Linux/Mac システムの場合
Rust を Unix システムにインストールするには、以下のコマンドをコピーして端末に貼り付け、Enter を押します。
curl https://sh.rustup.rs -sSf | sh
このコードは、システムに Rust をダウンロードしてインストールします。
インストール オプションを尋ねられたら、デフォルトのインストールを選択したいので、1 を入力して Enter を押して、インストールを続行する (デフォルト)
を選択します。
ダウンロード後、画面の最後に"Rust is installed now. Great!"
と表示され、その下に"Press the Enter key to continue"
と表示されるので、Enterを押します。 ターミナルを閉じます。
Rust が正しくインストールされているかどうかを確認するには、新しいターミナルを再度開き、以下のコマンドを使用して Rust のバージョンを表示します。
rustc --version
バージョン番号、コミット ハッシュ、およびコミット日付が表示されれば、Rust が正常にインストールされたと言えます。
Rustを始めよう
まず、ターミナルに移動して、次のコードを入力します。 Rust がインストールされているパスは、ターミナルの同じパスである必要があります。
cargo
これにより、Rust で使用されるすべてのパッケージとコマンドが表示されます。
次に、cargo
を使用して Rust で新しいプロジェクトを作成するための以下のコードを入力します。 これは、opencv-rust
という名前のバイナリ コード プロジェクトです。
cargo new --bin opencv-rust
これで、画面に "Created binary (application) opencv-rust package"
という出力が表示されます。 このコマンドで、opencv-rust
という名前の新しいバイナリ ファイルを作成しました。
次に、以下のコマンドを使用してこのプロジェクトを開きます。
cd opencv-rust
これによりパスが更新され、プロジェクトが開きます。 ここで、このプロジェクトのコードを記述するために、次のように入力します。
code .
これにより、Visual Studio Code が開きます。
次に、左側の src
にある main.rs
ファイルに移動します。 main.rs
を選択して開きます。 右側には、定型コードが既に存在していることがわかります。 次に、Ctrl+Shift+` を使用して VSCode ターミナルに移動し、以下のコマンドを実行します。
cargo build
cargo run
これにより、パッケージと依存関係がコンパイルされ、コードが実行されます。 VSCode ターミナルで、ボイラー コードの出力を確認できます。
RustでOpenCVを使う
OpenCV をインストールする前に、OpenCV 用のパッケージ コンパイラとプロジェクト ビルド システムをインストールする必要があります。 インストールするには、Mac 用のパッケージ マネージャーである Homebrew または brew をインストールする必要があります。 このリンクを使用してbrewをインストールできます。
この後、以下のパッケージをインストールし、OpenCV 用のシステムを 1つずつインストールします。 1つ目は、ライブラリのコンパイルに使用されるツールである pkg-config
です。
brew install pkg-config
2つ目は、ネイティブ ライブラリのビルドをサポートするビルド システムである CMake システムのインストールです。 これについては、以下のコードに従ってください。
brew install cmake
OpenCVパッケージとllvm
をインストールします。これには、OpenCVを処理してオブジェクトファイルに変換するために必要なすべてのツール、ライブラリ、およびヘッダーファイルが含まれています。
brew install --debug llvm-dev
brew install libopencv-dev
libopencv-dev
は OpenCV ライブラリをインストールします。 この手順の後、環境パスをエクスポートすることが重要です。
OpenCV が正しく動作するかどうかを確認するために、OpenCV プログラムを作成する必要があります。 左側を見ると、Cargo.toml
ファイルがあります。 それをクリックすると、右側にファイルが開き、その下に依存関係が表示されます。
依存関係の下に、次のコードを追加します。
opencv = "0.73.0"
bytes = "1"
anyhow = "1"
バージョン名を見つけるには、ウェブサイト crates.io
にアクセスし、OpenCV を検索して、利用可能な最新バージョンを見つけます。 この記事を書いているときに、最新バージョンが 0.73.0 であることがわかったので、VSCode で更新しました。
次に、src
の main.rs
ファイルに向かい、以下の簡単な OpenCV-Rust プログラムを作成します。
これは、OpenCV を使用して画像を水平方向に反転する単純な Rust コードです。
コード スニペット - (Rust):
use anyhow::Result;
use opencv::{
core::{self, Mat, Vector},
imgcodecs,
};
fn main() -> Result<()> {
let source_img = imgcodecs::imread("car.png", imgcodecs::IMREAD_UNCHANGED)?;
// Flipping image horizontally
let mut destination_arr = Mat::default();
core::flip(&source_img, &mut destination_arr, 1)?;
// Creating an output image
let arguments: Vector<i32> = Vector::new();
imgcodecs::imwrite("final-output.png", &destination_arr, &arguments)?;
Ok(())
}
まず、上記のように、anyhow
および opencv
ライブラリからいくつかのメソッドをインポートしました: Result
、Mat
、Vector
、および imgcodecs
。 次に、Result
を返す main
関数を作成しました。
出力のエラーを自動的に処理するために anyhow
ライブラリの Result
を使用しています。
Rust コード内のソース イメージを読み取るには、imgcodecs
から OpenCV の imread
を使用し、それを source_img
変数内に格納する必要があります。 この例では、ファイル名と拡張子が car.png
の車の画像を使用します。
画像を読み込んだので、マルチチャンネル配列である Mat
を渡す destination_Arr
を作成する必要があります。 画像を水平方向に反転するには、OpenCV ライブラリの flip
を使用し、source_img
、destination_arr
、および 1
を flip
メソッドに渡す必要があります。
最後のパラメータ 1
は、画像を水平方向に反転します。 画像を垂直方向に反転させたい場合は、1
の代わりに 0
を渡すことができます。
反転した画像を出力として保存するには、OpenCV の imwrite
メソッドを使用する必要があります。 ここで、ファイル名を最初のパラメーターに渡すことで、出力ファイルに任意の名前を付けることができます。
最後に、コードを実行する準備が整いました。 コードをビルドして実行するには、以下の 2つのコマンドを実行する必要があります。
cargo build
cargo run
出力:
これにより、Rust コードがコンパイルおよび実行されます。 このコマンドの出力は上記のとおりです。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn