SlideShare ist ein Scribd-Unternehmen logo
1 von 20
OTAMA
あるPHP拡張のお話
PHPカンファレンス関西2013 / HIDEO
HATTORI
自己紹介
, ,
PHPがっつり使ったのはここ1年程度
CとかPythonとかZshとかが好き
アプリケーション開発とか運営とかし
ています
Hideo Hattori
@hhatto Github Bitbucket
今日話すこと
CBIRって?
php-otamaの紹介
OTAMAとは
いわゆるひとつのCBIR(Content-based
image retrieval)
画像同士の類似度を出力できる
画像をクエリに画像が検索できる
https://github.com/nagadomi/otama
OTAMAPYとは
otamaのPythonインターフェース
PythonのC拡張でotamaライブラリをた
たけるようにしたもの
https://github.com/hhatto/otamapy
得意な亊
CとかPython CとかPython
CとかPython CとかPython
CとかPython CとかPython
CとかPython CとかPython
ある日言われました
「もう少しPHPにも興味持ってください
よ」と。
興味ないわけじゃないよ!!
得意な亊(C/Python)
×
PHP
=
PHP拡張モジュールを書こう!!
PHP-OTAMAとは
otamaのPHPインターフェース
いわゆるPHP拡張モジュール
使い方(類似度を求める)
lena.jpg lena-affine.jpg
使い方(類似度を求める)
設定ファイル(otama.conf)
{'driver': {'name': 'vlad_nodb'}}
使い方(類似度を求める)
Python
実行結果
from otama import Otama
db = Otama()
db.open('./otama.conf')
filename1 = 'images/lena.jpg'
filename2 = 'images/lena-affine.jpg'
print(db.similarity({'file': filename1}, {'file': filename2}))
0.362881481647
使い方(類似度を求める)
PHP
実行結果
$db = new Otama();
$db->open("./otama.conf");
$filename1 = "images/lena.jpg";
$filename2 = "images/lena-affine.jpg";
var_dump($db->similarity($filename1, $filename2));
double(0.36288148164749)
使い方(類似画像を検索)
設定ファイル(otama.conf)
{
'namespace': 'testnamespace',
'driver': {'name': 'color',
'data_dir': './data',
'color_weight': 0.2},
'database': {'driver': 'sqlite3',
'name': './data/otama.sqlite3'}
}
使い方(類似画像を検索)
Python
import os
from glob import glob
from otama import Otama
db = Otama.open('test.conf')
db.create_table()
files = glob('images/*.jpg') + glob('images/*.png')
kvs = {}
for filename in files:
kvs[db.insert(filename)] = filename
db.pull()
for result in db.search(5, 'lena.jpg'):
print("file=%s, sim=%f" % (kvs[result['id']], result['similarity']))
使い方(類似画像を検索)
実行結果
file=image/lena.jpg, sim=1.000000
file=image/lena-768x768.jpg, sim=0.968963
file=image/lena-affine.jpg, sim=0.770081
file=image/lena-rotate.jpg, sim=0.747762
file=image/baboon.png, sim=0.303697
使い方(類似画像を検索)
PHP
まだ使えません!!
絶賛開発中
Pull-Requestお待ちしてます!!
php-otama
参考資料
PHP Extension を作ろう第1回 - まず
は Hello World
30分でわかる PHP Extensionの作り方
を学べる記事をかいたよー \(^o^)/
mongo-php-driver
php-memcached
ご清聴ありがとうございまし
た!!
m(_ _)m

Weitere ähnliche Inhalte

Was ist angesagt?

がんばれ PHP Fiber
がんばれ PHP Fiberがんばれ PHP Fiber
がんばれ PHP Fiberinfinite_loop
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LTdrillan
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私Yuta Hayakawa
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Pythonhirokiky
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45civic Sasaki
 
Morinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothMorinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothAmuro Nishizawa
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyoShuyo Nakatani
 

Was ist angesagt? (11)

がんばれ PHP Fiber
がんばれ PHP Fiberがんばれ PHP Fiber
がんばれ PHP Fiber
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Python
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
Morinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetoothMorinezumiiii 20150425-bluetooth
Morinezumiiii 20150425-bluetooth
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 

Andere mochten auch

osakapy 2014.10 LT (CI for Python Project)
osakapy 2014.10 LT (CI for Python Project)osakapy 2014.10 LT (CI for Python Project)
osakapy 2014.10 LT (CI for Python Project)Hattori Hideo
 
image-matchの紹介
image-matchの紹介image-matchの紹介
image-matchの紹介Hattori Hideo
 
PEP8 and-autopep8 - PyCon APAC 2013 LT
PEP8 and-autopep8 - PyCon APAC 2013 LTPEP8 and-autopep8 - PyCon APAC 2013 LT
PEP8 and-autopep8 - PyCon APAC 2013 LTHattori Hideo
 

Andere mochten auch (6)

Osakapy 20140313 lt
Osakapy 20140313 ltOsakapy 20140313 lt
Osakapy 20140313 lt
 
osakapy 2014.05 LT
osakapy 2014.05 LTosakapy 2014.05 LT
osakapy 2014.05 LT
 
osakapy 2014.10 LT (CI for Python Project)
osakapy 2014.10 LT (CI for Python Project)osakapy 2014.10 LT (CI for Python Project)
osakapy 2014.10 LT (CI for Python Project)
 
image-matchの紹介
image-matchの紹介image-matchの紹介
image-matchの紹介
 
PEP8 and-autopep8 - PyCon APAC 2013 LT
PEP8 and-autopep8 - PyCon APAC 2013 LTPEP8 and-autopep8 - PyCon APAC 2013 LT
PEP8 and-autopep8 - PyCon APAC 2013 LT
 
Go破壊
Go破壊Go破壊
Go破壊
 

Ähnlich wie Php kansai-2013 lt-slide

Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御するKenichi Ahagon
 
Python+Raspberry Piでロボット製作はじめました
Python+Raspberry Piでロボット製作はじめましたPython+Raspberry Piでロボット製作はじめました
Python+Raspberry Piでロボット製作はじめましたM_Sugita
 
エンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たものエンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たものbasicinc_dev
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるRyo Shibayama
 
Hybridauthで簡単に認証システム実装
Hybridauthで簡単に認証システム実装Hybridauthで簡単に認証システム実装
Hybridauthで簡単に認証システム実装Youhei Iwasaki
 
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウBp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウKameko Ohmura
 
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。Yuta Hayakawa
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くshinjiigarashi
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身Hisateru Tanaka
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明Yuta Hayakawa
 
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!Shohei Okada
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46civicpg
 

Ähnlich wie Php kansai-2013 lt-slide (20)

Web api beginners
Web api beginnersWeb api beginners
Web api beginners
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
 
Python+Raspberry Piでロボット製作はじめました
Python+Raspberry Piでロボット製作はじめましたPython+Raspberry Piでロボット製作はじめました
Python+Raspberry Piでロボット製作はじめました
 
Php Lt 20080316
Php Lt 20080316Php Lt 20080316
Php Lt 20080316
 
エンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たものエンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たもの
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
 
Hybridauthで簡単に認証システム実装
Hybridauthで簡単に認証システム実装Hybridauthで簡単に認証システム実装
Hybridauthで簡単に認証システム実装
 
第67回PHP勉強会LT
第67回PHP勉強会LT第67回PHP勉強会LT
第67回PHP勉強会LT
 
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウBp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
 
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
 
ctypes拡張モジュール
ctypes拡張モジュールctypes拡張モジュール
ctypes拡張モジュール
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
 
業務の自動化をはじめよう!!
業務の自動化をはじめよう!!業務の自動化をはじめよう!!
業務の自動化をはじめよう!!
 
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!
 
PHP meets NodeJS
PHP meets NodeJSPHP meets NodeJS
PHP meets NodeJS
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
 

Php kansai-2013 lt-slide