python-OpenCVの研究3:ビデオ関連の操作(ビデオファイルを読み、ショーのビデオ、ビデオファイルを保存)

著作権:転載ご連絡ください。[email protected] https://blog.csdn.net/weixin_40928253/article/details/89786725

       使用される主な機能は次のとおりcv2.VideoCapture()、cv2.VideoWrite()。

 カメラで撮影した映像

      私たちはしばしば、リアルタイムの画像をキャプチャするためにカメラを使用する必要があります。OpenCVのは、このアプリケーションのための非常にシンプルなインターフェイスを提供します。さんがビデオをキャプチャし、グレースケールの映像表示に変換するためのカメラを使用してみましょう。

直接コードで騒ぎ、。(非常に詳細なコメント、それほど良い。:()

import cv2
#从摄像头读取图像
if __name__ == "__main__":
    # 获取摄像头0(本电脑摄像头)
    cap = cv2.VideoCapture(0)

    while (True):
        # 逐帧捕获
        ret, frame = cap.read()
        # 将摄像头获取的图像转为灰度图像
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 展示灰度图片
        cv2.imshow('frame', gray)
        # 按下ESC键退出
        k = cv2.waitKey(1)
        if k & k == 27:
            break
    cap.release()
    cv2.destroyAllWindows()

第二に、ビデオファイルを再生します

      カメラからのキャプチャと同じように、あなただけのビデオファイルのデバイスのインデックス番号の名前を変更する必要があります。適切な期間を設定するcv2.waiKeyを()は、各フレームの再生、使用する場合。設定が低すぎる場合、それは(あなたがビデオの再生速度を制御するには、このメソッドを使用することができます)非常に遅く再生されますが高すぎる設定されている場合、ビデオは、非常に高速に再生されます。通常は25ミリ秒。

#从文件中读取图像并显示
if __name__ == "__main__":
    def ReadVideo(self):
        cap = cv2.VideoCapture('1.avi')
        while (cap.isOpened()):
            ret, frame = cap.read()
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            cv2.imshow('frame', gray)
            k = cv2.waitKey(1)
            if k & k == 27:
                break
        cap.release()
        cv2.destroyAllWindows()

第三に、ビデオカメラから読み込んで表示され、output.aviとして保存されます

ペーストコード処理が実証されていません。(これは、エントリ・レベルの動作であり、詳細にコードのコメント)

#从摄像头中读取图像并保存为output.avi
if __name__ == "__main__":
    cap = cv2.VideoCapture(0)
    #生成的视频格式设置为.avi(OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频)
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    # cv2.VideoWriter(视频名, 格式, 码率(fps), 帧的尺寸等参数)
    out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret == True:
            #进行图像翻转, 1水平翻转、 0垂直翻转、-1水平垂直翻转
            frame = cv2.flip(frame,1)
            out.write(frame)
            cv2.imshow('frame', frame)
            #按下esc键退出
            if cv2.waitKey(1) & cv2.waitKey(1) == 27:
                break
        else:
            break
    cap.release()
    out.release()
    cv2.destroyAllWindows()

OKK !!!

 

おすすめ

転載: blog.csdn.net/weixin_40928253/article/details/89786725