欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

[筆記] 關于OpenCV-Python 的視頻處理筆記

系統 2171 0

最近在公司瘋狂做 Demo,最近需要使用 cv2 里的視頻操作,之前一直也沒放在心上,借這次機會好好研究一下吧。
此外,吐槽一句,做 Demo 前最好大家統一一下所用的環境。Opencv-Pyhton 2.x 與 3.x 會存在部分屬性函數名的修改,到時候 debug 就十分的繁瑣。
至于兩者的區別,可以看看文章末尾的參考資料。本文所使用的環境為:Python 2.7, Opencv-Python 3.4.0

目錄

  1. 獲取并展示視頻
  2. 保存視頻
  3. 常用方法

1. 獲取視頻

            
              
                import
              
               cv2

              
                # 創建 VideoCapture 實例,通過攝像頭獲取視頻,其中,參數 0 表示使用默認攝像頭  
              
              
cap 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                (
              
              
                0
              
              
                )
              
              
                # 創建 VideoCapture 實例,通過打開指定視頻文件獲取視頻
              
              
                # cap = cv2.VideoCapture('out.avi')
              
              
                # 調用 cap.isOpened() 以確保視頻獲取成功
              
              
                while
              
              
                (
              
              cap
              
                .
              
              isOpened
              
                (
              
              
                )
              
              
                )
              
              
                :
              
              
	
	ret
              
                ,
              
               frame 
              
                =
              
               cap
              
                .
              
              read
              
                (
              
              
                )
              
              
                # 展示所獲取的視頻
              
              
	cv2
              
                .
              
              imshow
              
                (
              
              
                'frame'
              
              
                ,
              
              frame
              
                )
              
              
                # 等待鍵盤輸入,若傳入參數為 0,則程序將無限制等待用戶的案件事件,否則,程序等待所傳入參數對應的毫秒時間后,跳出循環。
              
              
                if
              
               cv2
              
                .
              
              waitKey
              
                (
              
              
                1
              
              
                )
              
              
                &
              
              
                0xFF
              
              
                ==
              
              
                ord
              
              
                (
              
              
                'q'
              
              
                )
              
              
                :
              
              
                break
              
              
                # 釋放獲取設備
              
              
cap
              
                .
              
              release
              
                (
              
              
                )
              
              
                # 刪除所有建立的窗口
              
              
cv2
              
                .
              
              destroyAllWindows
              
                (
              
              
                )
              
            
          

2. 保存視頻

            
              
                import
              
               cv2
cap 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                (
              
              
                0
              
              
                )
              
              
                # 創建 VideoWrite 實例用于保存視頻,其中,需要指定輸出文件路徑,編碼形式,播放頻率以及幀的Size
              
              
                # From OpenCV : 
              
              
                # The constructors/functions initialize video writers. 
              
              
                # On Linux FFMPEG is used to write videos; on Windows FFMPEG or VFW is used; on MacOSX QTKit is used.
              
              
filePath 
              
                =
              
              
                'example.avi'
              
              
fourcc 
              
                =
              
                cv2
              
                .
              
              VideoWriter_fourcc
              
                (
              
              
                *
              
              
                'XVID'
              
              
                )
              
              
                # 創建 VideoWriter 實例
              
              
fps 
              
                =
              
               cap
              
                .
              
              get
              
                (
              
              cv2
              
                .
              
              cv2
              
                .
              
              CAP_PROP_FPS
              
                )
              
              
                # 獲取 VideoCapture 的 FPS
              
              
frameSize 
              
                =
              
              
                (
              
              cap
              
                .
              
              get
              
                (
              
              cv2
              
                .
              
              CAP_PROP_FRAME_WIDTH
              
                )
              
              
                ,
              
              cap
              
                .
              
              get
              
                (
              
              cv2
              
                .
              
              CAP_PROP_FRAME_HEIGTH
              
                )
              
              
                )
              
              
                # 獲取視頻的 VideoCapture 的 Size
              
              
out 
              
                =
              
               cv2
              
                .
              
              VideoWriter
              
                (
              
              filePath
              
                ,
              
               fourcc
              
                ,
              
               fps
              
                ,
              
               frameSize
              
                )
              
              
                while
              
              
                (
              
              cap
              
                .
              
              isOpened
              
                (
              
              
                )
              
              
                )
              
              
                :
              
              
	ret
              
                ,
              
               frame 
              
                =
              
               cap
              
                .
              
              read
              
                (
              
              
                )
              
              
	out
              
                .
              
              write
              
                (
              
              frame
              
                )
              
              
cap
              
                .
              
              release
              
                (
              
              
                )
              
              
                # 釋放視頻寫入實例
              
              
out
              
                .
              
              release
              
                (
              
              
                )
              
              
cv2
              
                .
              
              destroyAllWindows
              
                (
              
              
                )
              
            
          

3. 常用方法

            
              retval 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                .
              
              get
              
                (
              
              propId
              
                )
              
              
                #打開視頻文件或者相機設備進行視頻捕獲。
              
              

propId 常見取值如下
              
                :
              
              (以下為 Opencv
              
                -
              
              Python 
              
                3.
              
              x 的格式,在 Opencv
              
                -
              
              Python 
              
                2.
              
              x 中,需加上前綴 CV_)

              
                """
cv2.CAP_PROP_POS_MSEC:     視頻文件的當前位置(ms)
cv2.CAP_PROP_POS_FRAMES:   從0開始索引幀,幀位置。
cv2.CAP_PROP_POS_AVI_RATIO:視頻文件的相對位置(0表示開始,1表示結束)
cv2.CAP_PROP_FRAME_WIDTH:  視頻流的幀寬度。
cv2.CAP_PROP_FRAME_HEIGHT: 視頻流的幀高度。
cv2.CAP_PROP_FPS:          幀率
cv2.CAP_PROP_FOURCC:       編解碼器四字符代碼
cv2.CAP_PROP_FRAME_COUNT:  視頻文件的幀數
cv2.CAP_PROP_FORMAT:       retrieve()返回的Mat對象的格式。
cv2.CAP_PROP_MODE:         后端專用的值,指示當前捕獲模式

cv2.CAP_PROP_BRIGHTNESS:圖像的亮度,僅適用于支持的相機
cv2.CAP_PROP_CONTRAST:  圖像對比度,僅適用于相機
cv2.CAP_PROP_SATURATION:圖像飽和度,僅適用于相機
cv2.CAP_PROP_HUE:       圖像色調,僅適用于相機
cv2.CAP_PROP_GAIN:      圖像增益,僅適用于支持的相機
cv2.CAP_PROP_EXPOSURE:    曝光,僅適用于支持的相機
cv2.CAP_PROP_CONVERT_RGB:布爾標志,指示是否應將圖像轉換為RGB。
"""
              
              
                # grab, retrieve, read 的關系
              
              
                # Grabs the next frame from video file or capturing device.
              
              
retval 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                .
              
              grab
              
                (
              
              
                )
              
              
                # Decodes and returns the grabbed video frame.
              
              
retval
              
                ,
              
               image 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                .
              
              retrieve
              
                (
              
              
                [
              
              
                ,
              
               image
              
                [
              
              
                ,
              
               flag
              
                ]
              
              
                ]
              
              
                )
              
              
                # Grabs, decodes and returns the next video frame.
              
              
retval
              
                ,
              
               image 
              
                =
              
               cv2
              
                .
              
              VideoCapture
              
                .
              
              read
              
                (
              
              
                [
              
              
                ,
              
              image
              
                ]
              
              
                )
              
              
                # 由上可知,read 是 grab 和 retrieve 的結合體。當不需要當前的幀或畫面時,可以使用 grab 跳過,以減少 read 所耗費的額外時間。
              
            
          

參考資料:

  • opencv3 與opencv2不同之處
  • OpenCV 3.0與OpenCV 2.4的區別
  • OpenCV視頻操作
  • OpenCV+Python 攝像頭采集代碼
  • Python-OpenCV 處理視頻(一)(二): 輸入輸出 視頻處理
  • Python&OpenCV - 讀寫(read&write)視頻(video) 詳解及代碼
  • OpenCV—Python視頻的讀取及保存
  • opencv read grab retrieve 關系

如果你看到了這篇文章的最后,并且覺得有幫助的話,麻煩你花幾秒鐘時間點個贊,或者受累在評論中指出我的錯誤。謝謝!

作者信息:
知乎:沒頭腦
LeetCode:Tao Pu
CSDN:Code_Mart
Github:Bojack-want-drink


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 黄色资源在线观看 | 一区二区精品在线 | 99热久久精品免费精品 | 色综合区| 拍拍拍无遮挡高清视频在线网站 | 瑟瑟视频在线 | 午夜影院免费视频 | 亚洲欧美精品综合中文字幕 | 九九久久99 | 欧洲色阁中文字幕 | 亚洲成人综合视频 | 欧美日韩一区二区在线视频 | 亚洲精品无码成人A片在线虐 | 午夜性刺激小说 | 天天射夜夜骑 | 精品久久久久久综合日本 | 久久久一区二区三区视频 | 久久久久国产一区二区三区四区 | 日韩欧美亚洲 | 亚洲精品午夜一区二区 | 精品一区二区三区免费毛片 | 日韩av不卡在线 | 操操日| 亚洲人成在线播放 | 五月天婷婷网亚洲综合在线 | 蜜桃网在线观看 | 魏千翔 | 国产日韩欧美 | 日韩精品一区二区三区免费观看 | 午夜三级影院 | 国产一级特黄aa大片爽爽 | 国产视频导航 | 苏晓晖个人简介军衔 | 蜜桃免费一区二区三区 | 精品推荐国产麻豆剧传媒 | 亚洲精品久久久中文字幕 | 亚欧洲精品视频在线观看 | 欧美日韩国产网站 | 久久99精品国产 | 成人亚洲 | 久久久久成人精品免费播放 |