私のPC上で動作させるためにコードを少し変更しました。このようになると私は実行 は私が得る結果
import cv2
import cv2.cv as cv
import getopt, sys
def detect(img, cascade):
for scale in [float(i)/10 for i in range(11, 15)]:
for neighbors in range(2,5):
rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors,
minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects))
def find_face_from_img(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
rects = detect(gray, cascade)
if __name__ == '__main__':
args, video_src = getopt.getopt(sys.argv[1:], '', ['cascade=', 'nested-cascade='])
try: video_src = video_src[0]
except: video_src = 0
args = dict(args)
cascade_fn = args.get('--cascade', "cascades/haarcascade_frontalface_alt.xml")
cascade = cv2.CascadeClassifier(cascade_fn)
c=cv2.VideoCapture(0)
while(1):
ret, frame = c.read()
rects = find_face_from_img(frame)
if 0xFF & cv2.waitKey(5) == 27:
break
出力:
scale: 1.2, neighbors: 2, len rects: 1
scale: 1.2, neighbors: 3, len rects: 1
scale: 1.2, neighbors: 4, len rects: 1
scale: 1.3, neighbors: 2, len rects: 1
scale: 1.3, neighbors: 3, len rects: 1
scale: 1.3, neighbors: 4, len rects: 0
scale: 1.4, neighbors: 2, len rects: 1
scale: 1.4, neighbors: 3, len rects: 0
scale: 1.4, neighbors: 4, len rects: 0
scale: 1.1, neighbors: 2, len rects: 1
scale: 1.1, neighbors: 3, len rects: 1
scale: 1.1, neighbors: 4, len rects: 1
scale: 1.2, neighbors: 2, len rects: 1
scale: 1.2, neighbors: 3, len rects: 1
scale: 1.2, neighbors: 4, len rects: 1
scale: 1.3, neighbors: 2, len rects: 1
いくつかのアドバイスを:あなたに、minSizeを選択しないでください低すぎる...他のすべての小項目になります顔に似ています検出された。
これらのパラメータをすべて実行して、最適なものを見つけるとします。私はminNeighorsが高すぎるべきではないことを知っていました。
カスケードXMLファイルが正しくリンクされていることを確認してください。それが見つからなければ、エラーは出ません。顔が見つからないだけです。
リファクタリングを除いて、投稿されたコードがどこから違うのかわかりませんが、これをお試しいただきありがとうございます。ファイルの場所が正しい - 私はそれをコピーすることができます、それをcatし、完全なxmlファイルが印刷されます。 – user592419
私はあなたの2つの機能について何も変更しませんでした。私はちょうどメインを変更しました。あなたは直腸を手に入れませんか? – Ojtwist
驚いたことに。私はひげを持っていますが、それは私の友人を引っ張っていません。 – user592419