Метод read возвращает две переменные, первая - это переменные успеха, которые являются логическими (True, если кадр захвачен, иначе False), а вторая - это кадр. Скорее всего, вы читаете видео с 3-канальными кадрами, а кадр, как правило, представляет собой пустой массив, поэтому вы можете использовать атрибут shape.
Я бы предложил использовать cv2.resize для изменения размера.
vs = cv2.VideoCapture(args["video"])
# grab the frame from the threaded video stream and resize it
# to have a maximum width of 400 pixels
_, frame = vs.read()
(w, h, c) = frame.shape
#syntax: cv2.resize(img, (width, height))
img = cv2.resize(frame,(400, h))
print(w, h)
print(img.shape)
>> 480 640
(640, 400, 3) #rows(height), columns(width), channels(BGR)
w
и h
сохраняют исходную ширину и высоту вашего видеокадра, а img.shape
имеет измененные размеры ширины и высоты