OpenCV 單目攝像頭(python版)

      網友投稿 1344 2025-04-06

      前言


      本文主要介紹在OpenCV用使用單目攝像頭,包括:打開單目攝像頭、設置攝像頭參數、拍照、錄制視頻。

      環境:編程語言:Python3? ? ? ? 主要依賴庫:OpenCV3.x 或?OpenCV4.x

      目錄

      1)打開攝像頭

      2)設置分辨率

      3)細節提升

      4)攝像頭拍照

      5)錄制視頻

      單目攝像頭

      1)打開攝像頭

      OpenCV有VideoCapture()函數,能用來定義“攝像頭”對象,0表示第一個攝像頭(一般是電腦內置的攝像頭);如果有兩個攝像頭,第二個攝像頭則對應VideoCapture(1)。

      在while循環中使用“攝像頭對象”的read()函數一幀一幀地讀取攝像頭畫面數據。

      imshow函數是顯示攝像頭的某幀畫面;cv2.waitKey(1)是等待1ms,如果期間檢測到了鍵盤輸入q,則退出while循環。

      # -*- coding: utf-8 -*-

      import cv2

      cap = cv2.VideoCapture(0) # 0表示第一個攝像頭

      while(1):

      # get a frame

      ret, frame = cap.read()

      # show a frame

      cv2.imshow("capture", frame)

      if cv2.waitKey(1) & 0xFF == ord('q'):

      break

      cap.release()

      cv2.destroyAllWindows()

      調用release()釋放攝像頭,調用destroyAllWindows()關閉所有圖像窗口。

      2)設置分辨率

      有時需要指定攝像頭的分辨率,比如1920*1080;

      cap.set(3,1920) 設置幀的寬度為1920。cap.set(4,1080) 設置幀的長度為1080。

      # -*- coding: utf-8 -*-

      import cv2

      cap = cv2.VideoCapture(0)

      #先設置分辨率,寬:1920 長:1080

      cap.set(3,1920)

      cap.set(4,1080)

      while(1):

      # get a frame

      ret, frame = cap.read()

      # show a frame

      cv2.imshow("capture", frame)

      if cv2.waitKey(1) & 0xFF == ord('q'):

      break

      cap.release()

      cv2.destroyAllWindows()

      拓展:當攝像流為 cap,設置參數是cap.set(參數編號,參數);獲取參數值的函數是?cap.get(參數編號)。

      3)細節提升

      其實在ret, frame = cap.read() 代碼,能通過ret 的值來判斷是否成功讀取到攝像頭的畫面數據,加一個判斷邏輯更嚴謹一些;

      成功讀取攝像頭數據時,ret 值返回True;獲取失敗時返回False。

      # -*- coding: utf-8 -*-

      import cv2

      cap = cv2.VideoCapture(0)

      #先設置分辨率,寬:1920 長:1080

      cap.set(3,1920)

      cap.set(4,1080)

      while(1):

      # get a frame

      ret, frame = cap.read()

      if ret:

      # show a frame

      cv2.imshow("capture", frame)

      if cv2.waitKey(1) & 0xFF == ord('q'):

      break

      else:

      print("圖像數據獲取失?。。?)

      break

      cap.release()

      cv2.destroyAllWindows()

      4)攝像頭拍照

      拍照 = 保存圖片,使用 cv2.imwrite 把當前攝像頭的幀 數據寫進去,保存為圖片的形式;如果s鍵按下,則進行圖片保存;

      # -*- coding: utf-8 -*-

      import cv2

      cap = cv2.VideoCapture(0)

      #先設置分辨率,寬:1920 長:1080

      cap.set(3,1920)

      cap.set(4,1080)

      # 圖像計數 從1開始

      img_count = 1

      while(1):

      # get a frame

      ret, frame = cap.read()

      if ret:

      # show a frame

      cv2.imshow("capture", frame)

      # 等待按鍵事件發生 等待1ms

      key = cv2.waitKey(1)

      if key == ord('q'):

      # 如果按鍵為q 代表quit 退出程序

      print("程序正常退出..")

      break

      elif key == ord('s'):

      ## 如果s鍵按下,則進行圖片保存

      # 寫入圖片 并命名圖片為 圖片序號.png

      cv2.imwrite("{}.png".format(img_count), frame)

      print("保存圖片,名字為 {}.png".format(img_count))

      # 圖片編號計數自增1

      img_count += 1

      else:

      print("圖像數據獲取失敗?。?)

      break

      cap.release()

      cv2.destroyAllWindows()

      5)錄制視頻

      保存圖片使用的是cv2.imwrite(),要保存視頻,需要創建一個VideoWriter對象,需要傳入四個參數。

      輸出的文件名,如’output.avi’

      編碼方式FourCC碼

      幀率FPS

      要保存的分辨率大小

      # -*- coding: utf-8 -*-

      import cv2

      cap = cv2.VideoCapture(0)

      # 定義編碼方式并創建VideoWriter對象

      OpenCV 單目攝像頭(python版)

      fourcc = cv2.VideoWriter_fourcc(*'MJPG')

      outfile = cv2.VideoWriter('output.avi', fourcc, 25., (640, 480))

      while(cap.isOpened()):

      ret, frame = cap.read()

      if ret:

      outfile.write(frame) # 寫入文件

      cv2.imshow('frame', frame)

      if cv2.waitKey(1) == ord('q'):

      break

      else:

      break

      使用cv2.VideoCapture()創建視頻對象,然后在循環中一幀一陣顯示圖像。

      參考:https://www.programcreek.com/python/example/85663/cv2.VideoCapture

      https://appdividend.com/2020/06/26/python-cv2-videocapture-how-to-load-video-in-python/

      OpenCV Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格設置密碼的操作教程(excel表格密碼設置方法)
      下一篇:PHP如何解決網站大流量與高并發的問題(二)
      相關文章
      亚洲精品在线播放视频| 亚洲中文久久精品无码ww16| 中文亚洲成a人片在线观看| 亚洲美国产亚洲AV| 99亚偷拍自图区亚洲| 亚洲国产无套无码av电影| 国产精品亚洲一区二区在线观看 | 国产精品亚洲专区无码不卡| 在线观看亚洲AV日韩AV| 亚洲高清视频免费| 亚洲AV无码久久精品成人| 亚洲精品无码久久久影院相关影片| 伊人久久综在合线亚洲91| 国产亚洲精品成人a v小说| 亚洲日韩人妻第一页| 亚洲综合色在线观看亚洲| 精品国产日韩亚洲一区| 国产成人99久久亚洲综合精品 | 亚洲福利在线播放| 国产亚洲情侣一区二区无| 亚洲精品乱码久久久久久不卡| 亚洲精品无码久久毛片| 亚洲精品无码99在线观看| 精品国产人成亚洲区| 久久精品国产亚洲一区二区| 亚洲AV乱码一区二区三区林ゆな| 亚洲日本在线看片| 亚洲手机中文字幕| 亚洲国产视频久久| 美国毛片亚洲社区在线观看| 亚洲成a人一区二区三区| 日韩亚洲变态另类中文| 亚洲成AV人片在线观看WWW| 亚洲av日韩av天堂影片精品| 亚洲小视频在线播放| 亚洲AV无码无限在线观看不卡| 亚洲欧美黑人猛交群| 亚洲国产午夜福利在线播放| 伊人久久大香线蕉亚洲五月天| 久久亚洲精品无码| 亚洲天堂一区二区三区|