OpenCVのプログラムがCGIから呼び出せない

Windows + Apache + RubyでCGIを作り,リクエストがきたらOpenCVを使ったプログラム(Visualize.exe)で画像を生成してそれを返すものを作った.

テストとして,ローカルでVisualize.exeを実行すると,正しく実行されて処理結果の画像が生成された.

しかし,CGIのRubyスクリプトからsystem関数で呼び出しても実行されない.正確には,実行される(タスクマネージャには現れる)がしばらくしたら落ちて終了してしまう.

相当原因究明に手こずったが,原因は環境変数の設定だった.OpenCVのインストーラは,ユーザ環境変数のPathにOpenCVのbinのパスを設定するが,Windows+Apache上でCGIを実行すると,その実行ユーザはSYSTEMとなっている.つまり,SYSTEMさんの環境変数のPathにOpenCVのbinのパスが設定されてなかったため,OpenCVのdllが読み込まれずにプログラムが起動した直後に落ちていたということだった.

そこで,ユーザ環境変数ではなくシステム環境変数のPathにOpenCVのbinのパスを追加し,再起動.無事動くようになった.

コメントする