Image Searchでは検索キーとして画像を指定します。 この時、Image Searchは画像内の商品をどう識別しているのでしょうか?
答えは、応答結果(BODY情報)の”Region”と”Category”にあります。
この”Region”では以下の情報が応答されます。
- 左上座標 (x1, y1) と右下座標 (x2, y2) で決まる矩形領域。
また、検索時に商品のカテゴリー情報の指定は必須ではありません。 指定しない場合、Image Searchは自動的にカテゴリーを識別します。その情報は応答結果(BODY情報)の”Category”となります。
具体的に見ていきます。 コンソールのImage Searchの管理画面からテスト検索を実行します。
結果データに”category”と”region”情報が応答されます。 上記画像の該当部分を拡大します。
- categoryは”8”でボトルドリンク。検索キー画像をImage Searchはボトルドリンクとして識別
- regionは”49,149,67,273”で、 左上座標 (49,67) と右下座標 (149, 273) の矩形領域 の部分を検索キーの商品として識別
- マニュアルには4つの数字のどれがx1,y1,x2,y2なのか記載がありません。49,149,67,273=x1,x2,y1,y2です。
” 左上座標 (49,67) と右下座標 (149, 273) の矩形領域 の部分を検索キーの商品として識別 ”とのことですが、実際の画像イメージでは以下になります。
Image Searchは指定した画像から適切に商品を抽出していることを確認することが出来ました。
目次
画像切り出し処理の手順
今回は以下の手順を実施しています。 Image Searchから応答されるRegion情報で画像を切り抜くためにImageMagickを利用します。
- OSSからECSへ画像をダウンロード
- ImageMagickのインストール
- ImageMagckによる画像切り出し
- OSSへの画像のアップロード
- 切り出した画像の確認
1.OSSからECSへ画像をダウンロード
ImageMagickはECS上で実行します。 処理する画像はすでにAlibaba Cloud OSS上に存在します。 まずは、rcloneを使ってOSSからECSに画像データをダウンロードすることにします。 以下では”12.jpg”をダウンロードしています。
[root@sun work]# rclone copy oss:imagesearch-bigriver/12.jpg . [root@sun work]# ls 12.jpg |
2. ImageMagickのインストール
yumを利用し、ImageMagickをインストールします。
[root@sun ~]# yum install ImageMagick ~省略~ Installed: ImageMagick.x86_64 0:6.7.8.9-15.4.al7 Dependency Installed: OpenEXR-libs.x86_64 0:1.7.1-7.1.al7 cairo.x86_64 0:1.14.2-1.2.al7 fontconfig.x86_64 0:2.10.95-10.4.al7 fontpackages-filesystem.noarch 0:1.44-8.2.al7 ghostscript.x86_64 0:9.07-20.4.al7 ghostscript-fonts.noarch 0:5.50-32.1.al7 graphite2.x86_64 0:1.3.6-1.4.al7 harfbuzz.x86_64 0:0.9.36-1.1.al7 ilmbase.x86_64 0:1.0.3-7.1.al7 lcms2.x86_64 0:2.6-3.4.al7 libICE.x86_64 0:1.0.9-2.1.al7 libSM.x86_64 0:1.2.2-2.1.al7 libXdamage.x86_64 0:1.1.4-4.1.1.al7 libXext.x86_64 0:1.3.3-3.1.al7 libXfixes.x86_64 0:5.0.1-2.1.1.al7 libXfont.x86_64 0:1.5.1-2.1.al7 libXft.x86_64 0:2.3.2-2.1.al7 libXrender.x86_64 0:0.9.8-2.1.1.al7 libXt.x86_64 0:1.1.4-6.1.1.al7 libXxf86vm.x86_64 0:1.1.3-2.1.1.al7 libfontenc.x86_64 0:1.1.2-3.1.al7 librsvg2.x86_64 0:2.39.0-1.1.al7 libthai.x86_64 0:0.1.14-9.1.al7 libtool-ltdl.x86_64 0:2.4.2-21.4.al7 libwmf-lite.x86_64 0:0.2.8.4-41.1.al7 libxshmfence.x86_64 0:1.2-1.1.al7 mesa-libEGL.x86_64 0:11.2.2-2.20160614.4.al7 mesa-libGL.x86_64 0:11.2.2-2.20160614.4.al7 mesa-libgbm.x86_64 0:11.2.2-2.20160614.4.al7 mesa-libglapi.x86_64 0:11.2.2-2.20160614.4.al7 pango.x86_64 0:1.36.8-2.1.al7 pixman.x86_64 0:0.34.0-1.4.al7 poppler-data.noarch 0:0.4.6-3.1.al7 urw-fonts.noarch 0:2.4-16.1.al7 xorg-x11-font-utils.x86_64 1:7.5-20.1.al7 Complete! |
ImageMagick-develもインストールします。
[root@sun ~]# yum install ImageMagick-devel ~省略~ Installed: ImageMagick-devel.x86_64 0:6.7.8.9-15.4.al7 Dependency Installed: bzip2-devel.x86_64 0:1.0.6-13.2.al7 freetype-devel.x86_64 0:2.4.11-12.4.al7 ghostscript-devel.x86_64 0:9.07-20.4.al7 jasper-devel.x86_64 0:1.900.1-29.1.al7 libICE-devel.x86_64 0:1.0.9-2.1.al7 libSM-devel.x86_64 0:1.2.2-2.1.al7 libX11-devel.x86_64 0:1.6.3-3.4.al7 libXau-devel.x86_64 0:1.0.8-2.1.1.al7 libXext-devel.x86_64 0:1.3.3-3.1.al7 libXt-devel.x86_64 0:1.1.4-6.1.1.al7 libjpeg-turbo-devel.x86_64 0:1.2.90-5.1.al7 libtiff-devel.x86_64 0:4.0.3-27.1.al7 libxcb-devel.x86_64 0:1.11-4.1.al7 xorg-x11-proto-devel.noarch 0:7.7-13.1.al7 zlib-devel.x86_64 0:1.2.7-17.1.al7 Complete! |
3. ImageMagckによる画像切り出し
コマンド”convert”から以下を実行します。 Image Searchの応答情報は
左上座標 (49,67) と右下座標 (149, 273) でした。
-cropオプションでは[width]x[height]+[x]+[y]を指定します。
- [width] = 100 = 149-49
- [height] = 206 =273-67
- [x] = 49
- [y] = 67
[root@sun work]# convert 12.jpg -crop 100×206+49+67 12new.jpg |
4. OSSへの画像のアップロード
rcloneで画像をOSSにアップロードします。 OSSにアップロードしているのは次の手順で画像を確認するためです。 別の方法で確認しても問題ありません。
[root@sun work]# rclone copy 12new.jpg oss:imagesearch-bigriver/work/ |
5. 切り出した画像の確認
アップロードした画像をコンソールのOSS管理画面から確認します。 背景部分が切り取られ、商品部分が抽出されたことを確認出来ました。