2016-04-16 27 views
0

私は大きな画像から顔を切り抜くためのプログラムを開発しています。しかし、私はそれらを見ても問題を抱えています。OpenCVで大きな画像(3000x3000以上)で作業していて、画面に表示されない

私が扱っている画像は、2000x2000以上で、画面に表示されません。これはコードです:

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.2, 
    minNeighbors=5, 
    minSize=(100, 100), 
    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.NamedWindow(name, flags=WINDOW_NORMAL) 
cv2.imshow("Faces found", image) 
cv2.waitKey(0) 

そして、これは私がと心配一部です:

cv2.NamedWindow(name, flags=WINDOW_NORMAL) 
cv2.imshow("Faces found", image) 
cv2.waitKey(0) 

さて、OpenCVのドキュメントは、ウィンドウサイズを変更する方法についてinstructionsがありますが、これまでのところ、私は入れませんエラー:

エラー1:

Found 2 faces! 
Traceback (most recent call last): 
    File "face_detect.py", line 31, in <module> 
    cv2.NamedWindow(name, flags=WINDOW_NORMAL) 
AttributeError: 'module' object has no attribute 'NamedWindow' 

エラー2:

Found 2 faces! 
Traceback (most recent call last): 
    File "face_detect.py", line 31, in <module> 
    cv2.namedWindow("", WINDOW_NORMAL) 

NameError: name 'WINDOW_NORMAL' is not defined 

エラー3:

File "face_detect.py", line 31 
    cv2.namedWindow(winname[, WINDOW_NORMAL]) 
          ^
SyntaxError: invalid syntax 

誰も私が間違ってやっている私を見ることができますか?

+0

'sudo apt-get install python-opencv'を使ってパッケージを再インストールしてみる価値があるかもしれません。 – filaton

+2

@filatonこれは、いくつかのタイプミスのための少しの劇的な修正です。 – Suever

+0

@Suever Right! :)しかし、私はOpenCVが正しくインストールされていないときに同じ例外をスローしていたので、それが価値があると言った理由を覚えています。 – filaton

答えて

5

cv2.namedWindowの代わりにcv2.NamedWindowの入力ミスがあります。また、WINDOW_NORMALcv2.WINDOW_NORMALである必要があります。次に、cv2.resizeWindowを使用して目的のサイズを設定できます。ドキュメントは、次の形式

cv2.namedWindow(winname[, flags]) 

[]を使用サイドノートとして

# Specify an appropriate WIDTH and HEIGHT for your machine 
WIDTH = 1000 
HEIGHT = 1000 

cv2.namedWindow('image', cv2.WINDOW_NORMAL) 
cv2.imshow('image', image) 
cv2.resizeWindow('image', WIDTH, HEIGHT) 

は、flags任意位置入力であることを意味します。これは有効なPython構文ではないため、コードにコピー/ペーストすることはできません。

+0

それは私に与えた: "' NameError:name 'WIDTH'は定義されていません。どこに幅を追加しますか? – Rich

+0

@David画面のサイズに応じて、 'WIDTH'と' HEIGHT'を自分で指定します。 – Suever

+0

OK、それを得ました。今はうまくいきます、ありがとうございます。 – Rich

関連する問題