opencv-python調用大恆相機錄製視頻(Ubuntu16.04)

Python調用大恆相機錄製視頻(Ubuntu16.04)

環境配置

驅動安裝:https://blog.csdn.net/liuzongyuan1996/article/details/104219550
API安裝:https://blog.csdn.net/liuzongyuan1996/article/details/104221841
opencv-python安裝:

sudo pip3 install opencv-python

視頻錄製代碼

# !/home/liu/miniconda3/envs/dahengcamera/bin/python 
# coding=utf-8

import cv2  # 導入opencv包
import gxipy as gx # 導入大恆相機Python包
import time

# 打開設備
# 枚舉設備
device_manager = gx.DeviceManager() 
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
    sys.exit(1)
# 獲取設備基本信息列表
str_sn = dev_info_list[0].get("sn")
# 通過序列號打開設備
cam = device_manager.open_device_by_sn(str_sn)
# 導入配置信息
# cam.import_config_file("./import_config_file.txt")
# 開始採集
cam.stream_on()

# 視頻存儲的格式 
fourcc = cv2.VideoWriter_fourcc(*'XVID' )
# 幀率
fps = cam.AcquisitionFrameRate.get()  
# 視頻的寬高
size = (cam.Width.get(),cam.Height.get())
print(cam.Width.get(),cam.Height.get())
# 文件名定義
filename = '/home/liu/DaHengCamera/Video/video_'+time.strftime("%Y%m%d_%H%M%S", time.localtime())+'.avi'
#視頻存儲
out = cv2.VideoWriter(filename, fourcc, fps, size)
  
while out.isOpened():
    raw_image = cam.data_stream[0].get_image()    # 使用相機採集一張圖片
    rgb_image = raw_image.convert("RGB")    # 從彩色原始圖像獲取 RGB 圖像
    numpy_image = rgb_image.get_numpy_array()   # 從 RGB 圖像數據創建 numpy 數組
    if rgb_image is None:
        continue
    numpy_image = cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)  # opencv採用的是BGR圖像, 講RGB轉爲BGR
    cv2.namedWindow('video',cv2.WINDOW_NORMAL)#創建一個名爲video的窗口
    cv2.imshow('video',numpy_image)   # 將捕捉到的圖像在video窗口顯示
    out.write(numpy_image)    # 將捕捉到的圖像存儲

    #按esc鍵退出程序
    if cv2.waitKey(1) & 0xFF ==27:
        break

# 停止錄製,關閉設備
cam.stream_off()
cam.close_device()

使用本地攝像頭錄製視頻

import cv2#導入opencv包
import time

video=cv2.VideoCapture(0)   # 打開攝像頭,0代表攝像頭編號
 
fourcc = cv2.VideoWriter_fourcc(*'XVID')    # 視頻存儲的格式
fps = video.get(cv2.CAP_PROP_FPS)   # 幀率
# 視頻的寬高
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)), \
        int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))) 
# 文件名設置                 
filename = '/home/liu/DaHengCamera/Video/video_'+ \
    time.strftime("%Y%m%d_%H%M%S", time.localtime())+'.avi'
out = cv2.VideoWriter(filename, fourcc, fps, size)  # 視頻存儲
 
while out.isOpened():
    ret,img=video.read()    # 開始使用攝像頭讀數據,返回ret爲true,img爲讀的圖像
    if ret is False:    # ret爲false則關閉
        exit()
    cv2.namedWindow('video',cv2.WINDOW_AUTOSIZE)    # 創建一個名爲video的窗口
    cv2.imshow('video',img) # 將捕捉到的圖像在video窗口顯示
    out.write(img)  # 將捕捉到的圖像存儲
    # 按esc鍵退出程序
    if cv2.waitKey(1) & 0xFF ==27:
        video.release() # 關閉攝像頭
        break

問題解答

出現錯誤請參考文檔《Python接口開發說明書.pdf》,在doc_cn文件夾下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章