opencv 2つの学習(添付):ビデオ画像を読む

前回、画像の読み込みと保存の方法を学びましたが、カメラを通してフレームごとに画像を取得できますか?もちろんです!

カメラの電源を入れて画像を取得します

コードは次のように表示されます。

import cv2 as cv  #导入cv模块
import numpy as np #np科学计数的包,通过numpy对数据进行处理


def video_demo():
    capture = cv.VideoCapture(0) #打开和电脑上连接的相机
    while(True):
        ret,frame = capture.read() #ret是返回值,frame是视频中的每一帧
        frame = cv.flip(frame, 1) 
        cv.imshow("video", frame) #将每一帧显示出来
        c = cv.waitKey(1) 
        if c == 27:
            break
    capture.release()

video_demo() #调用获取视频方法
cv.destroyAllWindows()  #释放所有的内存

スクリーンショットを実行します。
ここに画像の説明を挿入

メソッドの説明:

1、capture = cv2.VideoCapture(0)

VideoCapture()のパラメーターは0で、これはノートブックの内蔵カメラを開くことを意味し、パラメーターは、capture = cv2.VideoCapture( "... / testなど、ビデオを開くためのビデオファイルパスです。 avi ")

2、ret、frame = catch .read()

Capture.read()は、ビデオをフレームごとに読み取ります。ret、frameは、capture.read()メソッドの2つの戻り値です。retがブール値の場合、読み取りフレームが正しい場合はTrueを返し、ファイルが最後まで読み取られた場合、その戻り値はFalseを返します。フレームは各フレームの画像であり、3次元マトリックスです。
3. cv :: flip()
cv :: flip()は、画像の反転(上下、左右、および両方)をサポートします。

0:y軸に沿って反転、0:x軸に沿って反転、<0:x軸とy軸に沿って反転

ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入

4. cv.waitKey(1)、waitKey()メソッド自体は、キーボード入力を待つことを意味します。

パラメータは1です。これは、ビデオの場合、1msの遅延で画像の次のフレームに切り替えることを意味します。

パラメータは0です。たとえば、cv.waitKey(0)は現在のフレーム画像のみを表示します。これは、ビデオの一時停止に相当します。

cv.waitKey(1000)のようにパラメーターが大きすぎると、遅延が長いためにスタックしたように感じます。

cは、キーボードから入力されたASCIIコードを取得します。escキーに対応するASCIIコードは27です。つまり、escキーを押すと、if条件文が確立されます。

5. release()を呼び出してカメラを解放し、destroyAllWindows()を呼び出してすべての画像ウィンドウを閉じます。

おすすめ

転載: blog.csdn.net/weixin_44145452/article/details/112405354