web-dev-qa-db-ja.com

顔認識にopencvを使用中の属性エラー

私は自分がYouTubeで見つけた簡単な顔認識プログラムを書いて、openCVの使い方を教えています。 opencvバージョン2とnumpy 1.8.0をインストールしました。私はpython2.7を使用しています。

以下のビデオと記事のリンクでこのコードを正確にコピーしましたが、エラーが発生し続けます。 AttributeError: 'module'オブジェクトに属性 'cv'がありません。

これが私が使っているコードです。

import cv2
import sys

# Get user supplied values
imagePath = sys.argv[1]
cascPath = sys.argv[2]

# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)

# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect faces in the image
faces = (faceCascade.detectMultiScale(
    gray,
    scaleFactor=1.1,
    minNeighbors=5,
    minSize=(30, 30),
    flags = cv2.cv.CV_HAAR_SCALE_IMAGE)
)

print "Found {0} faces!".format(len(faces))

# Draw a rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow("Faces found", image)
cv2.waitKey(0)

https://www.youtube.com/watch?v=IiMIKKOfjqE

https://realpython.com/blog/python/face-recognition-with-python/

8
RatstabOfficial

最新のopenCVでは、レガシーcvモジュールをインポートできなくなりました。さらに、定数の命名規則は通常、先頭の「CV _...」を取り除き、名前のいくつか/多くは多少変更されています。あなたは両方の問題に直面していると思います。

具体的には、報告しているエラーは、コード内のこの式cv2.cv.CV_HAAR_SCALE_IMAGEに関するものです。この式は、インポートしたCV_HAAR_SCALE_IMAGEパッケージのcvサブモジュール内の名前付き定数cv2を検索しようとしています。しかし悲しいかな、cv2.cvはもうありません。

OpenCV 3では、この定数は次のように参照されていると思います:cv2.CASCADE_SCALE_IMAGE

また、 このリンク が役立つ場合もあります。これは、OpenCVソースコードにあるfacedetect.pyサンプルスクリプトに対するものです。この例では、新しい定数名の使用法を確認できます。また、古いソース/チュートリアルからの他の変更がないかどうか調べることもできます。

33
svohara