[an error occurred while processing this directive]
('A`)/画像認識ソフトを触ってみましたよ\(´・ω・`)

第183日目:('A`)/画像認識ソフトを触ってみましたよ\(´・ω・`)

どうも、('A`)です。
ご無沙汰しておりました。
えーと、本州は梅雨まっさかりだと思いますが、札幌は気温がぐんぐん上がって
今日も30℃を超えました。
('A`)はもうお酒を飲めない体ですが、今日はビールがうまい「ススキノ日和」です。
ただ、急に気温が上がるので、体調を崩したり、倒れる人が多いです。
みなさんも体調管理気をつけて下さいね。
エース( ,_ノ` )も今日は寝込んでいます。

さて、第145日目から続いたSSDサーバですが、その集大成ともいえる
hayabusaサーバが今日も元気に動いています。
エース( ,_ノ` )とroot弟(´・ω・`)が丹精込めて作ったサーバです。
うれしい限りです。

で、日記の第174日目でもご紹介しましたが、画像リサイズ様にSSDサーバを
お使い頂いております。今日はそのサーバに新しく導入した画像認識ソフトの導入に
ついてご紹介します。

('A`)は画像操作に使うソフトウェアについて知識がありませんが、今回は
色々と教えて頂く機会を頂きました。

( ,_ノ` )「えーと、今よろしいですか?」
('A`)「(ドキドキ・・・)何でしょう?」
( ,_ノ` )「画像リサイズ様から、ソフトをインストールして欲しいとオーダーが
     入りまして・・・」
('A`)「何を入れればいいの?」
( ,_ノ` )「ImageMagickと、imagick 2.3.0です。」
('A`)「え、、、ImageMagickはT-Bananaではデフォルトで入れてるけど?」
( ,_ノ` )「あー、えーと、実は8ビット版を入れて欲しいとの事です。」
('A`)「へ?」
( ,_ノ` )「私も詳しく無いのですが、T-Bananaに入っているImageMagickは
     16ビット版なのだそうです。そこら辺も含めて調べて入れて下さい。」
('A`)「あう、あう・・・・」

さて、さて、弱ったなあ・・・・
まずは、8ビット版とか16ビット版とか一体何の事でしょう?
どうやら調べてみると、画像編集の関数(Quantum型?)の事の様です。
で、これを指定する為にはImageMagickをports(ソース)からコンパイル
し直して入れ直さないといけません。
では入れ直しの方法を書きます。
(実は、この後、追加オーダーの内容を聞いて思わず泣いちゃいました。
トホホ・・・)

[Imagemagickの再インストール]
1) 7.0R のportsを設置する。
スーパーユーザモードになってから
cd /tmp
fetch ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/7.0-RELEASE/ports/ports.tgz
fetch ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/7.0-RELEASE/ports/install.sh
chmod 755 install.sh
./install.sh

2)Imagemagickのmakeを行なう。
cd /usr/ports/graphics/ImageMagick
make
この時オプションの指定画面がこの様に表示されます。
(これが、コンパイル時のオプションです。)


で、この中で IMAGEMAGICK_16BIT_PIXELという項目にチェックがついているので
チェックを外してからOKを叩きます。(これで8ビットとなります。)
で、しばらくしてmakeが終わったら、次に既にインストールされている
ImageMagickを強制的にアンインストールします。
通常だとImageMagickは他のソフトと関連付けを持っているので、
pkg_deleteでアンインストールしようとすると「関連付けがあるよー」と
言われてエラーとなります。
強制的にアンインストールするには -f というオプションを付けます。
pkg_delete -f ImageMagick-6.3.6.9

-f を付ける事で、関連性を持っていても、構わずに削除してもらえます。
削除が終わったら、念の為rehashを叩きます。
次に新しいImageMagickをインストールします。
make install

[imagick 2.3.0のインストール]
3) imagick 2.3.0のインストール
portsからインストールするよりもpeclが有効になっているならpeclを
使ってインストールした方が最新版が入るので良いでしょう。
お使いのPHPでpeclが有効になっている事が前提です。
コマンドはこれだけ。
pecl install imagick

ね、簡単でしょ
インストールされたかどうかは下記のコマンドで確認します。
pecl list

さて、、、これで8.1の開発に入れるかなあ、と思っていたら・・・
root弟(´・ω・`)がそろーりとやって来ました。嫌な予感。
(´・ω・`)「えーと、画像リサイズ様から追加オーダーが入ってます。」
('A`)「ありゃりゃ。」
(´・ω・`)「どうもImageMagickをもう一度入れ直さないと、行けないようですよ。」
('A`)「ガーン・・・・」
(´・ω・`)「入れて欲しいソフトは以下の4つ、だそうです。よろしくです。」

で、教えてもらったのが下記の4つでした。
■画像認識ソフト
OpenCV ver1.0.0
※ご紹介頂いたページ
■顔検出モジュール(OpenCVが必要) face_detect ver0.0.1 ご紹介頂いたページ 関連サイト ■シームカービング技術(GD版) ※ご紹介頂いたページ Seam Carving 解説ページ ■Liquid Rescale シームカービング技術(Imagemagick版) ご紹介頂いたページ 【画像リサイズ様からお知らせ頂いた情報】 ImageMagickは現状8bitで--with-/lqr/を有効にしてリメイクします。

ガーン、ガーン、ガーン!
('A`)えーとですね、7.0Rのportsに収録されているImageMagickの
オプション画面には「--with-/lqr/」っていうパラメータを指定するところ
無かったです・・・
もしや、もっと新しいバージョンのをインストールしないといけないのかなあ?

で、まずは7.x系の最新portsを設置して調べてみました。
最新portsにはImageMagick 6.6.1.10が収録されていました。
(7.0RではImageMagick 6.3.6.9が収録されています。)
なるほど、、、ImageMagick 6.3.8-2以降のものだと--with-/lqr/を指定できるんだ。
で、パラメータを指定すればliblqr-1と言うのがインストールされる、と。
ここのサイトでそれを知りました。
ちなみに7.3Rのportsには対応版のImagemagickが入っていました。
で、opencvは最新のportsだと2.0.0_2となります。
ただ、7.0Rのportsであれば1.0.0_1がインストールできます。

ちょっと面倒臭いけど、方法を確立しましたので、ご紹介を。

[Imagemagickの再インストール]
1) 最新の7系 のportsを設置する。
スーパーユーザモードになってから
cd /usr
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
tar zxvf ports.tar.gz

2) ImageMagickを入れ直す前準備(glibの入れ替え)
cd /usr/ports/devel/glib20
make
まずはglibのオプション画面が表示されます。
glib本体のオプションはなにも設定しないでスルーします。


次にpyhtonのオプション画面が表示されます。
pyhton 2.6.5のオプションもスルーします。


なんで、こんな事をしているかというと、最新のImagemagickを
インストールする際に新しいバージョンのglibが必要となるかなです。
(これが判るまで、何度か社内サーバを再インストールする破目に
なりました。。。)

で、makeが終わったら、7.0Rで入っているglibを強制的にデリートします。
(7.0Rではglib-2.14.2 です。7系の最新ではglib-2.24.1_1です。)
pkg_delete -f glib-2.14.2
で、おもむろにインストール
make install
で、念の為 rehash します。

3)ImageMagickを入れ替えます。
cd /usr/ports/graphics/ImageMagick
make
で、最初にImageMagick本体のオプション設定画面が表示されます。


で、この中で IMAGEMAGICK_16BIT_PIXELという項目にチェックがついているので
チェックを外します。そして画面をスクロールすると項目の続きが出てきます。
こんな感じで


で、この中で IMAGEMAGICK_LQRという項目にチェックがついているのを
確認してからOKを叩きます。
で、しばらくするとliblqrのオプション画面が下記の様に表示されますので
ここではスルーします(OKを叩いて次に進みます)。


で、しばらくするとgaminというソフトのオプション画面が下記の様に表示されますので
ここではスルーします(OKを叩いて次に進みます)。
(gaminとはファイルやディレクトリのモニターシステム、というものだそうです。
('A`)も良く判っていませんが、インストールの為に必要なシステムのようです。


で、最後にfftw3というC言語のルーチンのライブラリ(?)のオプション画面
下記の様に表示されますのでここではスルーします(OKを叩いて次に進みます)。


で、しばらくするとmakeが終わりますので、次に既にインストールされている
ImageMagickを強制的にアンインストールします。
pkg_delete -f ImageMagick-6.3.6.9
次に新しいImageMagickをインストールします。
make install

[imagick の再インストール]
4)imagick を入れ替えます。
imagick が既にインストールされている場合には、古いImageMagickの
色々なものを取り込んで作られているので、正しく動かない事があります。
なので、以下のコマンドで一旦アンインストールします。
pecl uninstall imagick
pecl install imagick

('A`)ふー、、、道のりが長いなあ・・・でも、もう少しで終わります。
お付き合いの程を。

[opencv のインストール]
5) opencvのインストール準備作業
まずはportsを7系の最新版から7.0Rのものに差し替えます。
rm -rf /usr/ports
cd /tmp
fetch ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/7.0-RELEASE/ports/ports.tgz
fetch ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/7.0-RELEASE/ports/install.sh
chmod 755 install.sh
./install.sh

6) opencvのインストール
cd /usr/ports/graphics/opencv
make
するとopencvのオプション画面が下記の様に表示されますので
ここではスルーします(OKを叩いて次に進みます)。


で、makeが終わったら以下のコマンドでインストールします。
make install
で、終わったらrehashします。
7) face_detectのインストール
必ずopencvのインストール後に実施して下さい。
でないと、エラーになります
cd /tmp
fetch hhttp://www.netflowers.co.jp/face_detect/face_detect-0.0.1.tar.gz
tar zxvf face_detect-0.0.1.tar.gz
cd face_detect-0.0.1/
phpize
./configure
make
make test
make install

8) seam_carvingのインストール
cd /tmp
fetch http://www.maido3.com/server/zousan/seam_carving.tar.gz
tar xzf seam_carving.tar.gz
cd seam_carving/
phpize
./configure
make
make test
make install

(日記の処からseam_carving.tar.gzを取得できる様にしました。)
で、ここまでやると画像処理のソフトのインストールが終わります。
最後に通常はphp.iniにこんな風に記述してApacheを再起動して、使える様にします。
(PHPのプログラムから直接呼び出す場合には必要ないかも、です。)
[/usr/local/lib/php.ini]
extension="apc.so"
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
extension="imagick.so"
extension="face_detect.so"
extension="seam_carving.so

えーと、apc.so はPHPのアクセラレータです。
で、今回追加したソフトのうち imagick、face_detect、seam_carvingは
拡張モジュールが格納されるディレクトリに設置されます
そのディレクトリを extension_dir で指定しています。

('A`)/ふー、、、、やっと書き終わりました。
ちなみにroot弟(´・ω・`)にお願いして画像リサイズ様に確認をお願いしている処です。
たぶん、大丈夫じゃないかな?大丈夫だといいな、大丈夫であって欲しいなあ・・・
ってか、稼働中のサーバに後追いでソフトをインストールするって、作り手としては
正直あまりしたくないのです・・・
今まで動いていたものも、何かの拍子で動かなくなったり、とか起きる可能性が
絶えずあるので・・・
まあ、でもそこを何とかするのが僕たちですから。
(でも、今回は初物づくしで、大変だったなあ〜)

と、最後にぼやいてしまいましたが、ご容赦を。
そうそう。8.1はRC1が出ましたが、ダメダメでした。
だって、PHPのインストール時にエラーになったり、ソースからインストールした
Apacheを起動しようとすると、エラーになるし。
こんな感じです。
[PHPインストール時のエラー]
ext/gd/libgd/.libs/gd_png.o(.text+0xb38): In function
`php_gd_gdImageCreateFromPngCtx':
/tmp/php-5.2.5-for7.0_with_curl/ext/gd/libgd/gd_png.c:142: undefined
reference to `png_check_sig'
*** Error code 1

Stop in /tmp/php-5.2.5-for7.0_with_curl.
cd && rm -rf /tmp/php-5.2.5-for7.0_with_curl
pecl install APC
pecl:No such file or directory
*** Error code 1

Stop in /root.
このエラーを解消するにはPHPをインストールする前にlibpngをソースから
インストールして作り直す
必要があります。
cd /tmp
fetch http://download.sourceforge.net/libpng/libpng-1.4.2.tar.gz
tar zxvf libpng-1.4.2.tar.gz
cd libpng-1.4.2/
cp scripts/makefile.freebsd Makefile
make
make install

[Apacheの起動時のエラー]
# httpd -k start -DSSL
/libexec/ld-elf.so.1: Shared object "libcrypt.so.4" not found, required by
"libapr-1.so.4"
#
ちなみにライブラリにはlibcrypt.so.5がありましたが、
libcrypt.so.4は存在しません

なんだかなあ、と。
で、これを解消するには下記の力技で解決しました。
(あまりやりたくなかったけど・・・)
cd /lib
ln -s libcrypt.so.5 libcrypt.so.4

ちゃんとした8.1が公開されるのを祈ってます。
それでは、また。

182日目に戻る。   184日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]