sage/SageでOpenCVを使ってみよう
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2013/01/12からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/25/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
* SageでOpenCVを使ってみよう [#p1a55454]
OpenCV 2.2以降はpythonとのインタフェースが提供されている...
SageからOpenCVを使ってみます。
** OpenCVを使う準備 [#e195efa9]
通常importするものはcvだけで良いのですが、ipl2npでcv2の関...
cv, cv2をimportします。
また、numpyは、npとしてimportして使用します。
sageへの入力:
#pre{{
import cv, cv2
import numpy as np
# cvに未定義の値を設定
CV_LOAD_IMAGE_ANYDEPTH = 2
CV_LOAD_IMAGE_ANYCOLOR = 4
}}
*** IplImageからRGBのnumpy arrayに変換関数ipl2np [#aa001c...
SageでOpenCVのマトリックスを表示するには、IplImageからRGBの
numpy arrayに変換する必要があります。
ipl2np関数を以下のように定義します。
sageへの入力:
#pre{{
# cvのIplImageからRGBのnumpy arrayに変換する
def ipl2np(ipl):
mat = cv.GetMat(ipl)
bgrimage = np.asarray(mat)
rgbimage = cv2.cvtColor(bgrimage, cv2.COLOR_BGR2RGB)
return rgbimage/255.
}}
** 顔検出 [#da73515f]
OpenCVと言えば「顔検出」ということで、
[[OpenCVで顔検出>http://www.aianet.ne.jp/~asada/prog_doc/...
を参考にしながら、SageでLenaの顔の枠を表示してみましょう。
この例では、OpenCVをCから使用する1.0のインタフェースを使...
「詳解OpenCV」も1.0のインタフェースを使用しているので本と...
1.0の方がよいと思います。
ほとんどコメントの通りですが、以下の処理を行っています。
- 検出対象の画像ファイルパス
- 顔検出対象の画像データの読み込み
- カスケードのファイルパスセット
- カスケードのロード
- 検出に必要なメモリストレージを用意する
- 高速に顔認識するように引数を調整して、HaarDetectObjects...
- 検出したオブジェクトのリストをセット
facesの戻り値は、((x, y, width, height), 何かの値)のよう...
ここでは、「何かの値」をdummyとして処理しています。
sageへの入力:
#pre{{
# 検出対象の画像ファイルパス
tarFilePath = DATA + 'lena.jpg'
# 顔検出対象の画像データの読み込み
tarImg = cv.LoadImage(tarFilePath, CV_LOAD_IMAGE_ANYDEPTH...
# カスケードのファイルパスセット
cascadeFilePath = DATA + 'haarcascade_frontalface_alt.xml'
# カスケードのロード
cvHCC = cv.Load(cascadeFilePath)
# 検出に必要なメモリストレージを用意する
cvMStr = cv.CreateMemStorage(0)
# 高速に顔認識するように引数を調整して、HaarDetectObjects...
faces = cv.HaarDetectObjects(tarImg, cvHCC, cvMStr, 1.2, ...
# 戻り値がOpenCVと違うみたいなので、プリントしてみる
faces
}}
sageの出力:
#pre{{
[((217, 203, 169, 169), 24)]
}}
*** 検出された顔の位置を矩形で表示 [#j243e414]
検出された顔の位置をOpenCVのRectangleを使って矩形で表示し...
sageへの入力:
#pre{{
# 検出情報から顔の位置情報を取得し、矩形を描画する
for (x, y, width, height), dummy in faces:
cv.Rectangle(tarImg, (x, y), (x + width, y + height),...
}}
*** Sageで画像と検出されたかおの位置を表示 [#b8caad0a]
ipl2np関数を使ってnumpyの配列に変換し、matrix_plot関数を...
sageへの入力:
#pre{{
# 検出した顔の矩形を合わせて表示
matrix_plot(ipl2np(tarImg)).show( axes=True, frame=True, ...
}}
sageの出力:
&ref(sage0.png);
*** pythonインタフェースではリソースの解放関数がない [#a5...
Cの場合には、メモリストレージやイメージを解放しますが、py...
関数が見当たりません。
** コメント [#k172cf4e]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2013/01/12からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/25/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
* SageでOpenCVを使ってみよう [#p1a55454]
OpenCV 2.2以降はpythonとのインタフェースが提供されている...
SageからOpenCVを使ってみます。
** OpenCVを使う準備 [#e195efa9]
通常importするものはcvだけで良いのですが、ipl2npでcv2の関...
cv, cv2をimportします。
また、numpyは、npとしてimportして使用します。
sageへの入力:
#pre{{
import cv, cv2
import numpy as np
# cvに未定義の値を設定
CV_LOAD_IMAGE_ANYDEPTH = 2
CV_LOAD_IMAGE_ANYCOLOR = 4
}}
*** IplImageからRGBのnumpy arrayに変換関数ipl2np [#aa001c...
SageでOpenCVのマトリックスを表示するには、IplImageからRGBの
numpy arrayに変換する必要があります。
ipl2np関数を以下のように定義します。
sageへの入力:
#pre{{
# cvのIplImageからRGBのnumpy arrayに変換する
def ipl2np(ipl):
mat = cv.GetMat(ipl)
bgrimage = np.asarray(mat)
rgbimage = cv2.cvtColor(bgrimage, cv2.COLOR_BGR2RGB)
return rgbimage/255.
}}
** 顔検出 [#da73515f]
OpenCVと言えば「顔検出」ということで、
[[OpenCVで顔検出>http://www.aianet.ne.jp/~asada/prog_doc/...
を参考にしながら、SageでLenaの顔の枠を表示してみましょう。
この例では、OpenCVをCから使用する1.0のインタフェースを使...
「詳解OpenCV」も1.0のインタフェースを使用しているので本と...
1.0の方がよいと思います。
ほとんどコメントの通りですが、以下の処理を行っています。
- 検出対象の画像ファイルパス
- 顔検出対象の画像データの読み込み
- カスケードのファイルパスセット
- カスケードのロード
- 検出に必要なメモリストレージを用意する
- 高速に顔認識するように引数を調整して、HaarDetectObjects...
- 検出したオブジェクトのリストをセット
facesの戻り値は、((x, y, width, height), 何かの値)のよう...
ここでは、「何かの値」をdummyとして処理しています。
sageへの入力:
#pre{{
# 検出対象の画像ファイルパス
tarFilePath = DATA + 'lena.jpg'
# 顔検出対象の画像データの読み込み
tarImg = cv.LoadImage(tarFilePath, CV_LOAD_IMAGE_ANYDEPTH...
# カスケードのファイルパスセット
cascadeFilePath = DATA + 'haarcascade_frontalface_alt.xml'
# カスケードのロード
cvHCC = cv.Load(cascadeFilePath)
# 検出に必要なメモリストレージを用意する
cvMStr = cv.CreateMemStorage(0)
# 高速に顔認識するように引数を調整して、HaarDetectObjects...
faces = cv.HaarDetectObjects(tarImg, cvHCC, cvMStr, 1.2, ...
# 戻り値がOpenCVと違うみたいなので、プリントしてみる
faces
}}
sageの出力:
#pre{{
[((217, 203, 169, 169), 24)]
}}
*** 検出された顔の位置を矩形で表示 [#j243e414]
検出された顔の位置をOpenCVのRectangleを使って矩形で表示し...
sageへの入力:
#pre{{
# 検出情報から顔の位置情報を取得し、矩形を描画する
for (x, y, width, height), dummy in faces:
cv.Rectangle(tarImg, (x, y), (x + width, y + height),...
}}
*** Sageで画像と検出されたかおの位置を表示 [#b8caad0a]
ipl2np関数を使ってnumpyの配列に変換し、matrix_plot関数を...
sageへの入力:
#pre{{
# 検出した顔の矩形を合わせて表示
matrix_plot(ipl2np(tarImg)).show( axes=True, frame=True, ...
}}
sageの出力:
&ref(sage0.png);
*** pythonインタフェースではリソースの解放関数がない [#a5...
Cの場合には、メモリストレージやイメージを解放しますが、py...
関数が見当たりません。
** コメント [#k172cf4e]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc