0
別のビデオでバックグラウンド減算を行って得たビデオがあります。今私はこのビデオのブロブ検出を実行し、赤い枠線でブロブをマークする必要があります。次のように私のコードは次のとおりバックグラウンド減算ビデオでブロブ検出を実行できませんopencv python
capture = cv2.VideoCapture('bw.avi')
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
video = cv2.VideoWriter('harsha_blob.avi', fourcc, 10.0,size)
while (1):
ret, im = capture.read()
im = cv2.convertScaleAbs(im)
params = cv2.SimpleBlobDetector_Params()
params.blobColor = 0
params.filterByColor = True
params.minArea = 0
params.filterByArea = False
params.minThreshold = 120;
params.maxThreshold = 255;
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(im)
# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
if ret==True:
video.write(im_with_keypoints)
else:
capture.release()
video.release()
break
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cv2.destroyAllWindows()
背景ビデオがブロブ検出は、黒/グレーブロブを見つけたようにブロブが黒と白の背景にするために反転した減算しました。私は単一のフレームでブロブを検出することができますが、私はビデオ上でそれを実行しようとすると、次のエラーが発生しています。
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
error: C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\features2d\src\draw.cpp:115: error: (-215) !outImage.empty() in function cv::drawKeypoints
エラーが発生するのはなぜですか?そして私はこれをどのように修正するのですか?