最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OPENCV攝像頭讀取視頻的實(shí)現(xiàn)示例

 更新時(shí)間:2025年09月28日 08:33:26   作者:月瘋  
本文主要介紹了OPENCV攝像頭讀取視頻,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

OpenCV 讀取攝像頭的代碼示例

以下是幾種使用 OpenCV 讀取攝像頭的常見(jiàn)方法:

1. 基礎(chǔ)攝像頭讀取

import cv2

# 打開(kāi)默認(rèn)攝像頭(通常是0)
cap = cv2.VideoCapture(0)

# 檢查攝像頭是否成功打開(kāi)
if not cap.isOpened():
    print("無(wú)法打開(kāi)攝像頭")
    exit()

print("攝像頭已打開(kāi),按 'q' 鍵退出")

while True:
    # 讀取一幀
    ret, frame = cap.read()
    
    # 檢查幀是否讀取成功
    if not ret:
        print("無(wú)法讀取幀")
        break
    
    # 顯示幀
    cv2.imshow('攝像頭', frame)
    
    # 按'q'鍵退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 釋放資源
cap.release()
cv2.destroyAllWindows()

2. 設(shè)置攝像頭參數(shù)

import cv2

cap = cv2.VideoCapture(0)

# 設(shè)置攝像頭參數(shù)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)   # 寬度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)  # 高度
cap.set(cv2.CAP_PROP_FPS, 30)            # 幀率

# 獲取實(shí)際參數(shù)值
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv2.CAP_PROP_FPS)

print(f"攝像頭分辨率: {width}x{height}, 幀率: {fps}")

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 在畫(huà)面上顯示信息
    cv2.putText(frame, f"分辨率: {int(width)}x{int(height)}", (10, 30), 
                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
    cv2.putText(frame, f"幀率: {fps}", (10, 60), 
                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
    
    cv2.imshow('攝像頭', frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

3. 多攝像頭讀取

import cv2

# 嘗試打開(kāi)多個(gè)攝像頭
caps = []
for i in range(3):  # 嘗試打開(kāi)0,1,2號(hào)攝像頭
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        caps.append(cap)
        print(f"攝像頭 {i} 已連接")
    else:
        print(f"攝像頭 {i} 未連接")

if not caps:
    print("沒(méi)有可用的攝像頭")
    exit()

print(f"共找到 {len(caps)} 個(gè)攝像頭")

while True:
    frames = []
    for i, cap in enumerate(caps):
        ret, frame = cap.read()
        if ret:
            # 在每幀上標(biāo)記攝像頭編號(hào)
            cv2.putText(frame, f"Camera {i}", (10, 30), 
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
            frames.append(frame)
    
    if not frames:
        break
    
    # 合并顯示多個(gè)攝像頭畫(huà)面
    if len(frames) == 1:
        combined = frames[0]
    elif len(frames) == 2:
        combined = cv2.hconcat(frames)
    else:
        # 對(duì)于3個(gè)或更多攝像頭,可以調(diào)整布局
        top = cv2.hconcat(frames[:2])
        bottom = cv2.hconcat(frames[2:]) if len(frames) > 2 else frames[2]
        combined = cv2.vconcat([top, bottom]) if len(frames) > 2 else top
    
    cv2.imshow('多攝像頭', combined)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 釋放所有攝像頭
for cap in caps:
    cap.release()
cv2.destroyAllWindows()

4. 保存視頻流

import cv2

cap = cv2.VideoCapture(0)

# 設(shè)置視頻編碼器和輸出文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

recording = False
print("按 'r' 開(kāi)始/停止錄制,按 'q' 退出")

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 如果正在錄制,保存幀
    if recording:
        out.write(frame)
        cv2.putText(frame, "錄制中...", (10, 30), 
                    cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
    
    cv2.imshow('攝像頭', frame)
    
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    elif key == ord('r'):
        recording = not recording
        print("錄制" if recording else "停止錄制")

cap.release()
out.release()  # 釋放視頻寫(xiě)入器
cv2.destroyAllWindows()

5. 帶簡(jiǎn)單圖像處理的攝像頭讀取

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

mode = 0  # 0: 原圖, 1: 灰度, 2: 邊緣檢測(cè), 3: 模糊
modes = ['原圖', '灰度', '邊緣檢測(cè)', '模糊']

print("按 'm' 切換模式,按 'q' 退出")

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 根據(jù)模式處理圖像
    if mode == 1:
        processed = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        processed = cv2.cvtColor(processed, cv2.COLOR_GRAY2BGR)  # 轉(zhuǎn)回BGR用于顯示
    elif mode == 2:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        processed = cv2.Canny(gray, 100, 200)
        processed = cv2.cvtColor(processed, cv2.COLOR_GRAY2BGR)
    elif mode == 3:
        processed = cv2.GaussianBlur(frame, (15, 15), 0)
    else:
        processed = frame.copy()
    
    # 顯示當(dāng)前模式
    cv2.putText(processed, f"模式: {modes[mode]}", (10, 30), 
                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
    
    cv2.imshow('攝像頭', processed)
    
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    elif key == ord('m'):
        mode = (mode + 1) % len(modes)
        print(f"切換到模式: {modes[mode]}")

cap.release()
cv2.destroyAllWindows()

部分api解釋?zhuān)?/h2>

ret, frame = cap.read()

  • 第一個(gè)返回值 (ret):布爾值(True/False),表示幀是否成功讀取
  • 第二個(gè)返回值 (frame):如果讀取成功,這是一個(gè)包含圖像數(shù)據(jù)的 NumPy 數(shù)組
# 顯示一幀圖像
    cv2.imshow('frame', frame)

    # 如果按下'q'鍵,退出循環(huán)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

到此這篇關(guān)于OPENCV攝像頭讀取視頻的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)OPENCV攝像頭讀取視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • django框架模型層功能、組成與用法分析

    django框架模型層功能、組成與用法分析

    這篇文章主要介紹了django框架模型層功能、組成與用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了Django框架中模型層的基本概念、原理、常用組件構(gòu)成與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • numpy基礎(chǔ)教程之np.linalg

    numpy基礎(chǔ)教程之np.linalg

    這篇文章主要給大家介紹了關(guān)于numpy基礎(chǔ)教程之np.linalg的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Python的Django框架使用入門(mén)指引

    Python的Django框架使用入門(mén)指引

    這篇文章主要介紹了Python的Django框架使用入門(mén)指引,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • python標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)之sys模塊詳解

    python標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)之sys模塊詳解

    sys模塊是最常用的和python解釋器交互的模塊,sys模塊可供訪(fǎng)問(wèn)由解釋器(interpreter)使用或維護(hù)的變量和與解釋器進(jìn)行交互的函數(shù),下面這篇文章主要給大家介紹了關(guān)于python標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)之sys模塊的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 如何使用Python中paramiko工具批量的查詢(xún)、管理、配置路由器交換機(jī)

    如何使用Python中paramiko工具批量的查詢(xún)、管理、配置路由器交換機(jī)

    本篇文章主要記錄在學(xué)習(xí)過(guò)程中,使用paramiko小批量管理路由器交換機(jī)的練習(xí),循序漸近的理解paramiko這個(gè)工具和代碼運(yùn)用,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Python 降級(jí)的兩種實(shí)現(xiàn)方法

    Python 降級(jí)的兩種實(shí)現(xiàn)方法

    本文主要介紹了Python 降級(jí)的兩種實(shí)現(xiàn)方法,幫助用戶(hù)在降級(jí)Python時(shí)不完全卸載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • python實(shí)現(xiàn)驗(yàn)證碼識(shí)別功能

    python實(shí)現(xiàn)驗(yàn)證碼識(shí)別功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)驗(yàn)證碼識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python寫(xiě)的一個(gè)定時(shí)重跑獲取數(shù)據(jù)庫(kù)數(shù)據(jù)

    Python寫(xiě)的一個(gè)定時(shí)重跑獲取數(shù)據(jù)庫(kù)數(shù)據(jù)

    本文給大家分享基于python寫(xiě)的一個(gè)定時(shí)重跑獲取數(shù)據(jù)庫(kù)數(shù)據(jù)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2016-12-12
  • python爬取豆瓣電影排行榜(requests)的示例代碼

    python爬取豆瓣電影排行榜(requests)的示例代碼

    這篇文章主要介紹了python爬取豆瓣電影排行榜(requests),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python實(shí)現(xiàn)感知器算法詳解

    python實(shí)現(xiàn)感知器算法詳解

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)感知器算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論

新密市| 三穗县| 永兴县| 崇州市| 江西省| 镇康县| 柘荣县| 五华县| 鄂伦春自治旗| 盱眙县| 临泽县| 鄂托克旗| 临朐县| 绍兴县| 漠河县| 宁化县| 长兴县| 南昌县| 海安县| 肥乡县| 客服| 房山区| 修文县| 平昌县| 枣阳市| 新化县| 嘉兴市| 辽宁省| 麻阳| 长沙市| 徐水县| 香河县| 罗定市| 阜平县| 靖安县| 汉中市| 新津县| 沙河市| 江源县| 临安市| 卫辉市|