Когда я использую отладчик VsCode для запуска кода, я вообще не получаю никакой ошибки, и все работает нормально, но когда я пытаюсь запустить код без отладчика, я получаю эту ошибку:
[ERROR:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap.cpp (116) cv::VideoCapture::open VIDEOIO(CV_IMAGES): raised OpenCV exception:
OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\videoio\src\cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): vtest.avi in function 'cv::icvExtractPattern'
Я использую OpenCV 4.2.0.32 и numpy 1.18.1
Код, который я использую:
import cv2
import numpy as np
video = cv2.VideoCapture("vtest.avi")
ret, frame1 = video.read()
ret, frame2 = video.read()
while video.isOpened():
try:
difference = cv2.absdiff(frame1, frame2)
grayscale = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(grayscale, (5, 5), 0)
_, threshold = cv2.threshold(blur, 35, 255, cv2.THRESH_BINARY)
dilated = cv2.dilate(threshold, None, iterations=2)
contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
if cv2.contourArea(contour) < 950:
continue
cv2.drawContours(frame1, contours, -1, (0, 255, 0), 1)
cv2.rectangle(frame1, (x, y), (x+w, y+h), (120, 0, 150), 2)
cv2.imshow("feed", frame1)
frame1 = frame2
ret, frame2 = video.read()
if cv2.waitKey(50) == 27:
break
except:
break
cv2.destroyAllWindows()
video.release()