私は自分が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/
最新の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サンプルスクリプトに対するものです。この例では、新しい定数名の使用法を確認できます。また、古いソース/チュートリアルからの他の変更がないかどうか調べることもできます。