X(Twitter) Zenn GitHub RSS 共有

「さくらのレンタルサーバ」でOpenCVを使用する

作成日時:2022-06-22
更新日時:2022-06-22

※「サーバ」と「サーバー」で表記ゆれがあるけれども、参照先の記述に準拠しているためである。

はじめに

「さくらのレンタルサーバ」上で画像加工をするWEBアプリを作りたかったので、一通り実装してみた。
その際のメモを記載する。

だが、共有サーバーに高負荷を掛けてはいけないので、やめておいた方がいい。
「さくらのレンタルサーバ」の禁止事項にあたる。

後述するが、私はサーバー上での画像加工はやめ、OpenCV.jsを使用し、フロント側で行うようにした。

1.Python3とNumpyをインストール

下記のサイトを参照。

さくらのレンタルサーバーにPython3とNumpyをインストールする | NABENAVI.net

Python3のインストール。

# ソースを取得
# https://www.python.org/ftp/python/ からインストールしたいバージョンを探す
wget https://www.python.org/ftp/python/x.x.x/Python-x.x.x.tgz

# 解凍
tar zxf Python-x.x.x.tgz

# ビルド + インストール
cd ./Python-x.x.x
./configure --prefix=(任意のインストール場所)
make
make install

# 動作確認。エラーにならなければ良し。パス通す必要があれば通せ
which python3
which pip3

Numpyのインストール。

# バージョン指定したければnumpy==x.x.x
pip3 install numpy

2.OpenCVをインストールする

下記のサイトを参照されたし。

  1. Python用にOpenCVをビルドする | doitu.info
  2. OpenCV3をさくらのレンタルサーバーでビルドする - AICam
  3. 【opencv】さくらのレンタルサーバーにopencv-4.5.1をインストール | レンサバ
# ソースをダウンロード(gitでも可)

# 1.opencv
wget https://github.com/opencv/opencv/archive/x.x.x.zip

# 2.opencv_contrib
wget https://github.com/opencv/opencv_contrib/archive/x.x.x.zip

# 上記を解凍
unzip XXX

# ビルド + インストール
cd 1で解凍したディレクトリ
mkdir build
cd build

## makeの設定(さくらレンタルサーバへのccmakeの導入は参考URL-2)

# 下記を設定する。正直解ってない。他のサイトを見た方がよい(参考URL-2)
# CMAKE_BUILD_TYPE=Release
# CMAKE_INSTALL_PREFIX=(出力先)
# WITH_FFMPEG=ON
# OPENCV_EXTRA_MODULES_PATH=(2.opencv_contribのパス)/modules
# PYTHON_EXECUTABLE=(Python3のインストールパス)/bin/pythonX.X
# PYTHON3_LIBRARY=(Python3のインストールパス)/lib/libpythonほにゃらら
# BUILD_EXAMPLES=ON
ccmake .. または cmake ..

# cmakeの結果、下記が出力されていれば大丈夫っぽい
--   Python 3:
--     Interpreter:                 PYTHON_EXECUTABLEの内容? (ver x.x.x)
--     Libraries:                   PYTHON3_LIBRARYの内容? (ver 3.7.3)
--     numpy:                       さっきインストールしたnumpyのパス
--     install path:                インストール先

# ビルド + インストール
make
make install

以下、発生する可能性のあるエラーとその対処法。

1.malloc.hがどうたらこうたら。
→stdlib.hに書き換える。(参考URL-2)

2.memalignがどうたらこうたら。

// 書き換え
return memalign(iAlign, iSize);

void *ptr;
posix_memalign(&ptr, iAlign, iSize);
return ptr;

// ファイルの先頭に下記を追加
# include <stdlib.h>

成功したらどこかにcv2.soが出来ているはずなので、そこにPYTHONPATHを通すか、PYTHONPATHの所にcv2.soを移動する。

動作確認。
下記でエラーにならなければ良し。

python3
>>> import cv2

個人的メモ(パス関連)

~/local/.cshrc:
setenv PYTHONPATH PATH
alias python python3

source .cshrc
rehash

OpenCV.jsの使用

目的のWEBアプリを作ることができたが、サーバーに負荷がかかりそうだった。
なのでOpenCV.jsを使用し、フロント側で画像加工をするようにした。

参考:OpenCV.jsをJavaScript/Node.jsで使ってみた | DevelopersIO