2016-03-27 4 views
3

私はyoutubeで見つけた簡単な顔認識プログラムを作成してopenCVの使い方を教えています。私はopencvバージョン2とnumpy 1.8.0をインストールしました。私はpython2.7を使用しています。顔認識にopencvを使用しているときに属性エラーが発生しました

私はこのコードを以下のビデオと記事のリンクで正確にどのようにコピーしたのですか?まだエラーが発生しています。 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/

+0

はあなたが取得しているエラーで、それはあなたがOpenCVの3.xのではなく、OpenCVの2.xのを使用していると思われますPythonインタプリタで、検証するために 'cv2 .__ version__'コマンドを発行します。 – svohara

答えて

12

最新のOpenCVのは、もはやレガシーcvモジュールをインポートすることができません。さらに、定数の命名規則は、一般的に先行する「CV _...」で取り除かれ、いくつかの名前の多くは多少変更されています。私はあなたが両方の問題に取り組んでいると思います。

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

は、OpenCVの3で、私は次のようにこの定数は現在参照されていると信じて:cv2.CASCADE_SCALE_IMAGE

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

0

がOpenCV3でjupyterのノートブックに働く更新されたコードです:

[] 
import cv2 
import matplotlib.pyplot as plt 
%matplotlib inline 

[] 
# Get user supplied values 
imagePath = "abba.png" 
cascPath = "haarcascade_frontalface_default.xml" 

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

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

[] 
# Read the image 
image = cv2.imread(imagePath) 

[] 
plt.imshow(image) 
plt.show() 

[] 
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.CASCADE_SCALE_IMAGE #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) 

[] 
plt.imshow(image) 
plt.show() 
関連する問題