opencvの使い方で分からないことがあります。

元の動画ファイルをopencvでエッジ検出させ、新たに動画ファイルとして保存したいと思い、
以下のコードで実行しようとしました。

import numpy as np
import cv2

cap = cv2.VideoCapture('video.mp4')

fps    = cap.get(cv2.CAP_PROP_FPS)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width  = cap.get(cv2.CAP_PROP_FRAME_WIDTH)

fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
out = cv2.VideoWriter('output.mp4', int(fourcc), fps, (int(width), int(height)))

while(cap.isOpened()):
    try:
        ret, frame = cap.read()
        edge = cv2.Canny(frame,50,100)
        out.write(edge)
        cv2.imshow('frame',edge)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    except:
        break

out.release()
cap.release()
cv2.destroyAllWindows()

動画ファイルは出力されますが、中身が再生できません。
ご教授お願いします。