2012-01-31 29 views
2

下に述べたように、私は単純なコードを持っている:インポートOpenCVのmoduls

import cv 
from opencv.cv import * 
from opencv.highgui import * 

img = cv.LoadImage("test.jpg") 
cap = cv.CreateCameraCapture(0) 
while cv.WaitKey(1) != 10: 
    img = cv.QueryFrame(cap) 
    cv.ShowImage("cam view", img) 
cascade = cv.LoadHaarClassifierCascade('haarcascade_frontalface_alt.xml', cv.Size(1,1))  

しかし、私はこのエラーに直面した:

# AttributeError: 'module' object has no attribute 'LoadImage' 

私は以下のコードを変更する場合:

import cv 
#from opencv.cv import * 
#from opencv.highgui import * 

img = cv.LoadImage("test.jpg") 
cap = cv.CreateCameraCapture(0) 
while cv.WaitKey(1) != 10: 
    img = cv.QueryFrame(cap) 
    cv.ShowImage("cam view", img) 
cascade = cv.LoadHaarClassifierCascade('haarcascade_frontalface_alt.xml', cv.Size(1,1))  

最初のエラーが解決され、別のエラーが発生しました。

AttributeError: 'module' object has no attribute 'LoadHaarClassifierCascade' 

私は両方のモジュールが必要ですが、getherと競合しているようです。

ここで私は何をしなければなりませんか?

+0

どのモジュールがどのクラスに含まれているかを教えてください。 – Nicoretti

+1

2行目と3行目にインポートしたものを使用していません。そして、私がPythonの仕組みを理解する限り、最初のケースでは 'AttributeError'を解決するためにこれらの行をコメントアウトすることは不可能です'cv'モジュールかそうでないかのどちらかで、グローバル名前空間にもっと多くのものをインポートしてもそれを変更するつもりはありません) – wim

+0

エラーメッセージから、最後のコード行がこのモジュールをインポートする必要があることがわかります! – Amin

答えて

1

インポートしたものにはどのようにアクセスしますか?

# imports the cv module, all stuff contained in it and 
# the module itself is now accessible via: cv.classname, cv.functionname 
# where classname, functionname is the name of the class/function which 
# the cv module provides.. 
import cv 

# imports everything contained in the opencv.cv module 
# after this import it is available via it's classname, functionname, etc. 
# Attention: without prefix!! 
from opencv.cv import * 

# @see opencv.cv import 
from opencv.highgui import * 

@see pythonでのモジュールとインポートの詳細については、こちらをご覧ください。

どのクラスがどのモジュールに含まれているのかを指定できれば、問題の特定のソリューションを追加できます。

+0

ありがとうございました。 – Amin

+0

私はこの質問は、OpenCVライブラリを適切にインポートする方法に関連していると思います。一般的にはPythonでインポートするよりです – danr

+0

python opencvには構文が異なるライブラリがいくつかあります。 – Amin

5

OpenCVでhaar classifier(とにかくPythonインターフェイス)をロードするには、単にcv.Loadを使用します。

import cv 
cascade = cv.Load('haarcascade_frontalface_alt.xml') 

hereを参照してください。

また、OpenCVソースに付属しているサンプルは、実際には良好です(OpenCV-2.xx/samples/python)。