python-opencv 拼接多个摄像头

opencv拼接多个摄像头

  • 通过hstack, vstack拼接
  • 通过一个大的矩阵显示
  • 总结

通过hstack, vstack拼接

代码

import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap_t = cv2.VideoCapture(1)
while cap.isOpened():
	ret, frame = cap.read()
	ret_t, frame_t = cap_t.read()
	frame_h = np.hstack((frame, frame_t)) # frame_v = np.vstack((frame, frame_t))
	cv2.imshow('title', frame_h)
	if cv2.waitKey(10) == 113: #点击q的时候退出
		break

效果(hstack):
python-opencv 拼接多个摄像头_第1张图片
hstack是横向拼接,vstack是纵向拼接

通过一个大的矩阵显示

代码

import cv2
import numpy as np

frame_h = np.zeros((480, 1280, 3), dtype=np.uint8) # 创建一个1280*640的矩阵用来显示
cap = cv2.VideoCapture(0)
cap_t = cv2.VideoCapture(1)
while cap.isOpened():
	ret, frame = cap.read()
	ret_t, frame_t = cap_t.read()
	frame_h[0:480, 0:640, :] = frame
	frame_h[0:480, 640:1280, :] = frame_t
	cv2.imshow('title', frame_h)
	if cv2.waitKey(10) == 113:
		break

效果
python-opencv 拼接多个摄像头_第2张图片
注意,再创建大的矩阵的使用要填入dtype=np.uint8不然会出现显示白屏或是显示色彩不对的情况

总结

第一种方法适用于摄像头或是图片数量固定的时候,通过hstack和vstack拼接每次仅能两张图片拼接。第二种方法适用于摄像头数量不定的情况,设置好大的显示矩阵后,只需将你想要显示的区域填入内容就可以显示,其他部分会显示黑色。

你可能感兴趣的:(python,python-opencv,多摄像头显示)