前提・実現したいこと
Pythonで、動画の中から、動きのある部分を取り出して、それを画像として保存するというプログラムを作ったところ、このようなエラーが出ました。
発生している問題・エラーメッセージ
17 frame_diff = cv2.absdiff(img_last,img_b) TypeError: Expected Ptr<cv::UMat> for argument '%s'
該当のソースコード
Python
import cv2, os no = 0 img_list = None save_dir = "./exfish" cap = cv2.VideoCapture("fish.mp4") while True: is_ok, frame = cap.read() if not is_ok: break frame = cv2.resize(frame,(640,360)) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray,(15,15),0) img_b = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) if not img_list is not None: frame_diff = cv2.absdiff(img_last,img_b) cnts = cv2.findContours(frame_diff,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[0] for pt in cnts: x,y,w,h = cv2.boundingRect(pt) if w < 100 or w > 500 :continue imgex = frame [y:y+h,x:x+w] outfile = seve_dir + "/" + str(no) + ".jpg" cv2.imwrite(outfile,imgex) no += 1 img_last = img_b cap.release() print("ok")
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 12:57