web-dev-qa-db-ja.com

TypeError:必要な引数 'mat'(pos 2)が見つかりません

私はcv2で以下のコードを持っています。このコードは https://github.com/dipakkr/3d-cnn-action-recognition からダウンロードされます。取得するビデオのフレームを視覚化するためにcv2.imshowを使用したいと思います。しかし、次のエラーが発生します。何が問題ですか?出力がゼロの配列であるため、このコードが実際にビデオを読み取ることができるかどうか疑問です。

def video3d(self, filename, color=False, skip=True):

        cap = cv2.VideoCapture(filename)
        #ret, frame=cap.read()
        #cv2.imshow('frame', frame)
        nframe = cap.get(cv2.CAP_PROP_FRAME_COUNT) #Returns the specified VideoCapture property  ,,Number of frames in the video file

        print (nframe, "nframe")

        if skip:
            frames = [x * nframe / self.depth for x in range(self.depth)]
            print (frames, "frameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeees")

        else:
            frames = [x for x in range(self.depth)]
            print (frames, "frameseeeeeeeeeeeeeeeeeeeeeeeeeeeeeee2")

        framearray = []

        for i in range(self.depth):
            cap.set(cv2.CAP_PROP_POS_FRAMES, frames[i])  #Sets a property in the VideoCapture. ,,0-based index of the frame to be decoded/captured next.
            ret, frame = cap.read()
            cv2.imshow(frame)
            print(ret, "reeeeeeeeeeeeeeeeettttttttt")
            print(frame ,"frame issssssssssss:")
            frame = cv2.resize(frame, (self.height, self.width))
            print(frame, "frame222 isssssssssssssss")
            #cv2.imshow(frame)
            if color:
                framearray.append(frame)
            else:
                framearray.append(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY))

        cap.release()
        return np.array(framearray)


X.append(vid3d.video3d(v_file_path, color=color, skip=skip))

エラー:

    main()
  File "3dcnn.py", line 151, in main
    args.output, args.color, args.skip)
  File "3dcnn.py", line 103, in loaddata
    X.append(vid3d.video3d(v_file_path, color=color, skip=skip))
  File "/home/gxa131/Documents/final_project_computationalintelligence/3d-cnn-action-recognition/videoto3d.py", line 34, in video3d
    cv2.imshow(frame)
TypeError: Required argument 'mat' (pos 2) not found
2
parvaneh

cv2.imshow の最初の引数はウィンドウ名であるため、2番目の入力mat(画像)が欠落していると見なされます。ウィンドウに名前を付けたくない場合は、最初の入力パラメーターとして空の文字列を指定できます。

cv2.imshow('', frame) 
5
A Kruger

この質問はすでに回答済みですが、一般的なansを追加したいと思います!

基本的にpythonこのエラーにより、呼び出された関数に2番目のパラメーターを提供するのに失敗した場合。

このようなエラーが発生した場合は、出力セクションでエラーが指摘されている行番号に移動し、呼び出した関数がすべてのパラメーターを渡されていることを確認してください。

0
Shilpa