3

opencvを使用して、Webカメラからのフレームをjpgやpngなどとして保存しようとしています。ここに次のような例があるにもかかわらず、私が思っていたよりも難しいことがわかりました。JavaまたはPythonでWebカメラから単一の画像をキャプチャする

私はこれをやろうとしています:

if __name__ == "__main__":
print "Press ESC to exit ..."

# create windows
cv.NamedWindow('Raw', cv.CV_WINDOW_AUTOSIZE)
cv.NamedWindow('Processed', cv.CV_WINDOW_AUTOSIZE)

# create capture device
device = 0 # assume we want first device
capture = cv.CaptureFromCAM(0)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 640)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 480)


# check if capture device is OK
if not capture:
    print "Error opening capture device"
    sys.exit(1)

while 1:
    # do forever

    # capture the current frame
    frame = cv.QueryFrame(capture)
    if frame is None:
        break

    # mirror
    cv.Flip(frame, None, 1)

    # face detection
    detect(frame)

    # display webcam image
    cv.ShowImage('Raw', frame)

    # handle events
    k = cv.WaitKey(10)

    if k == 0x1b: # ESC
        print 'ESC pressed. Exiting ...'
        break

    if k == 0x63 or k == 0x43:
        print 'capturing!'
        s, img = capture.read()
        if s:
            cv.SaveImage("r'C:\test.jpg", img) 

ご覧のとおり、フローズンヨーグルトが他の質問で提案したコードを変更して、文字cを押したときに画像をキャプチャするようにしました。それは機能せず、機能させるためのドキュメントが見つかりません。

助けてください!どうもありがとう、アレックス

4

1 に答える 1

4

保存セクションを次のように変更します。

if k == 0x63 or k == 0x43:
    print 'capturing!'
    cv.SaveImage("test.jpg",frame) 

それは私にとってはうまくいきます。検出のためにフレームをすでにキャプチャしているので、これを保存するには、フレームを再度キャプチャする必要があります。

また、cv.CaptureFromCam()とcv.VideoCapture()は異なります。それらを混同しないでください。

于 2012-07-07T06:24:50.633 に答える