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文件夾下。