3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows環境でRust+OpenCVを動かす

3
Last updated at Posted at 2025-11-18

はじめに

この記事は,Windows上でRust+OpenCVの環境を構築する方法についてです.

準備

OpenCVクレートのドキュメントを参照しながら進めていきます.
RustChocolateyがインストールされていることを前提とします.

まずは実行するプログラムを用意します.
とりあえずcvtestというプロジェクトを作ります.

> cargo new cvtest

OpenCVクレートを追加します.2025年11月では0.97.2がインストールされました.

> cd cvtest
> cargo add opencv

cat.jpgをグレースケール変換して保存するプログラムを用意します.

main.rs
use opencv::core;
use opencv::imgcodecs;
use opencv::imgproc;
use opencv::prelude::*;

fn main() -> opencv::Result<()> {
    // 画像を読み込む
    let img = imgcodecs::imread("cat.jpg", imgcodecs::IMREAD_COLOR)?;

    // グレースケールに変換
    let mut gray = Mat::default();
    imgproc::cvt_color(
        &img,
        &mut gray,
        imgproc::COLOR_BGR2GRAY,
        0,
        core::AlgorithmHint::ALGO_HINT_DEFAULT,
    )?;

    // 結果を保存
    imgcodecs::imwrite("output.jpg", &gray, &Default::default())?;

    Ok(())
}

OpenCVのインストール

ChocolateyでLLVMとOpenCVをインストールします.

choco install llvm opencv

私の場合は,LLVMはC:\Program Files\LLVMに,OpenCVはC:\tools\opencvにインストールされました.インストール先が異なる場合は適宜読み替えてください.

次にパスを設定します.

ドキュメントではOPENCV_LINK_LIBSOPENCV_LINK_PATHSOPENCV_INCLUDE_PATHSが必須のようです.
OpenCVのインストール先がC:\tools\opencvの場合は,以下のように設定します.後述するようにOPENCV_LINK_LIBSはバージョン依存なので注意してください.

> [Environment]::SetEnvironmentVariable('OPENCV_LINK_LIBS', 'opencv_world4110', 'User')
> [Environment]::SetEnvironmentVariable('OPENCV_LINK_PATHS', 'C:\tools\opencv\build\x64\vc16\lib', 'User')
> [Environment]::SetEnvironmentVariable('OPENCV_INCLUDE_PATHS', 'C:\tools\opencv\build\include', 'User')

OPENCV_LINK_LIBSはOpenCVのバージョン依存です.C:\tools\opencv\build\bin\opencv_videoio_ffmpeg4110_64.dllのように,インストールディレクトリにはバージョン番号がファイル名に含まれているファイルが複数あります.確認したバージョン番号に応じて書き換えてください.

次に,LLVMのパスも設定します.ドキュメントでは触れられていませんでしたが,LLVMのパスを設定しなかった場合,ビルド時にfailed to run custom build command for opencv v0.97.2というエラーが出ました.

> [Environment]::SetEnvironmentVariable('PATH', $env:PATH + ';C:\\Program Files\\LLVM\\bin', 'User')

これでビルドは通るようになりました.

> cargo build

しかし,プログラムの実行には失敗します.

> cargo run
   Compiling opencv v0.97.2
   Compiling cvcv v0.1.0 (C:\cvcv)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.17s
     Running `target\debug\cvcv.exe`
error: process didn't exit successfully: `target\debug\cvcv.exe` (exit code: 0xc0000135, STATUS_DLL_NOT_FOUND)

このエラーは実行時にDLLファイルを見つけられなかったため起こるようです.
ドキュメントではPATHにDLLファイルが存在するディレクトリを指定するように書かれていますが,ここがハマりポイントでした.

Be sure to specify paths in UNIX style (/C/Program Files/Dir) because colon in PATH might be interpreted as the entry separator.

「:」が区切りと勘違いされないように,パスをUNIX形式で書く必要があるようです.しかし,/C/tools/opencv/build/x64/vc16/binを設定してもエラーは解消されませんでした.

逆にWindows形式のパスを設定すると正常に実行できました.

> [Environment]::SetEnvironmentVariable('PATH', $env:PATH + ';C:\tools\opencv\build\x64\vc16\bin', 'User')
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?