91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中利用OpenCV讀取顯示視頻

發布時間:2021-04-06 16:21:15 來源:億速云 閱讀:372 作者:Leah 欄目:開發技術

本篇文章為大家展示了怎么在Python中利用OpenCV讀取顯示視頻,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
  print("Cannot open camera")
  exit()
while True:
  # 逐幀捕獲
  ret, frame = cap.read()
  # 如果正確讀取幀,ret為True
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  # 我們在框架上的操作到這里
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  # 顯示結果幀e
  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break
# 完成所有操作后,釋放捕獲器
cap.release()
cv.destroyAllWindows()

cap.read()返回布爾值(True/ False)。如果正確讀取了幀,它將為True。因此,你可以通過檢查此返回值來檢查視頻的結尾。

有時,cap可能尚未初始化捕獲。在這種情況下,此代碼顯示錯誤。你可以通過cap.isOpened()方法檢查它是否已初始化。如果是True,那么確定。否則,使用cap.open()打開它。

你還可以使用cap.get(propId)方法訪問該視頻的某些功能,其中propId是0到18之間的一個數字。每個數字表示視頻的屬性(如果適用于該視頻),并且可以顯示完整的詳細信息在這里看到:cv::VideoCapture::get()。其中一些值可以使用cap.set(propId,value)進行修改。value是你想要的新值。

例如,我可以通過cap.get(cv.CAP_PROP_FRAME_WIDTH)和cap.get(cv.CAP_PROP_FRAME_HEIGHT)檢查框架的寬度和高度。默認情況下,它的分辨率為640x480。但我想將其修改為320x240。只需使用和即可。ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320) and ret = cap.set(cv.CAP_PROP_FRAME_HEIGHT,240).

注意
如果出現錯誤,請確保使用任何其他相機應用程序(例如Linux中的Cheese)都可以正常使用相機。

從文件播放視頻

它與從相機捕獲相同,只是用視頻文件名更改攝像機索引。另外,在顯示框架時,請使用適當的時間cv.waitKey()。如果太小,則視頻將非常快,而如果太大,則視頻將變得很慢(嗯,這就是顯示慢動作的方式)。正常情況下25毫秒就可以了。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('vtest.avi')
while cap.isOpened():
  ret, frame = cap.read()
  # 如果正確讀取幀,ret為True
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break
cap.release()
cv.destroyAllWindows()

注意
確保安裝了正確的 ffmpeg 或 gstreamer 版本。有時,使用視頻捕獲(Video Capture)是一件令人頭疼的事情,主要原因是錯誤地安裝了 ffmpeg / gstreamer。

保存視頻

所以我們捕捉一個視頻,一幀一幀地處理,我們想要保存這個視頻。對于圖像,它非常簡單,只需使用 cv.imwrite()。這里還需要做一些工作。

這次我們創建一個 VideoWriter 對象。我們應該指定輸出文件名(例如: output.avi)。然后我們應該指定 FourCC 代碼(詳見下一段)。然后傳遞幀率的數量和幀大小。最后一個是顏色標志。如果為 True,編碼器期望顏色幀,否則它與灰度幀一起工作。

FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定視頻編解碼器的4字節代碼。可用代碼列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。它取決于平臺。遵循編解碼器對我來說效果很好。

在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。(最好使用XVID。MJPG會生成大尺寸的視頻。X264會生成非常小的尺寸的視頻)
在Windows中:DIVX(尚待測試和添加)
在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。
FourCC代碼作為MJPG的cv.VideoWriter_fourcc('M','J','P','G')or cv.VideoWriter_fourcc(*'MJPG')傳遞。

在從攝像機捕獲的代碼下面,沿垂直方向翻轉每一幀并保存。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# 定義編解碼器并創建VideoWriter對象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
  ret, frame = cap.read()
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  frame = cv.flip(frame, 0)
  # 寫翻轉的框架
  out.write(frame)
  cv.imshow('frame', frame)
  if cv.waitKey(1) == ord('q'):
    break
# 完成工作后釋放所有內容
cap.release()
out.release()
cv.destroyAllWindows()

上述內容就是怎么在Python中利用OpenCV讀取顯示視頻,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皋兰县| 江阴市| 淮南市| 南漳县| 高陵县| 平遥县| 抚顺市| 清水河县| 荆州市| 马尔康县| 高陵县| 济阳县| 太原市| 海宁市| 买车| 汾西县| 佛冈县| 玛沁县| 绵竹市| 台山市| 保定市| 耒阳市| 南开区| 比如县| 巴林右旗| 汉川市| 剑川县| 普兰店市| 黄梅县| 洛阳市| 南宁市| 桑植县| 内江市| 中宁县| 巍山| 资阳市| 水城县| 泾阳县| 绥德县| 泌阳县| 丰台区|