I don’t understand why the np.shape passed to cv.resize needs me to swap the tuple elements:
# Our operations on the frame come here
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# Display the resulting frame
cv.imshow('frame', gray)
(rows, cols) = np.shape(gray)
resized = cv.resize(gray, (cols * 2, rows * 2))
cv.imshow('resized', resized)