我想使用 3D 头戴式显示器 (HMD) 为第一人称视角 (FPV) 创建立体视频源。如何在同一视频中显示 2 个网络摄像头视频,然后使用箭头键调整它们的位置?
问问题
1658 次
1 回答
2
并排显示 2 个视频非常简单 - 只需从两个摄像头获取帧并将结果复制到一个图像中(Mat):
VideoCapture videoLeft(0), videoRight(1);
Mat left, right, both;
int width = 640, height = 480;
both = Mat(height + 100, 2 * width + 150, CV_MAKETYPE(8, 3), CV_RGB(100, 100, 100));
while(true)
{
videoLeft >> left;
videoRight >> right;
if (left.data == NULL || right.data == NULL)
break;
left.copyTo(Mat(both, Rect(50, 50, width, height)));
right.copyTo(Mat(both, Rect(100 + width, 50, width, height)));
imshow("images", both);
waitKey(30);
}
将此代码中的宽度和高度值替换为从您的相机抓取的图像的大小 - 您可以通过检查left.rows
(高度)和left.cols
(宽度)的值轻松检查它。
您可以调整更改这 2 行的位置:
left.copyTo(Mat(both, Rect(50, 50, width, height)));
right.copyTo(Mat(both, Rect(100 + width, 50, width, height)));
只需使用 Rect 构造函数的第一个和第二个参数的值。第一个参数是 x 位置,第二个是 y。您可以在按下某个键后更改它们。更多信息 - [由于链接断开而更新为网络存档:] http://web.archive.org/web/20130619174223/http://bsd-noobz.com/opencv-guide/45-1-using-keyboard
于 2013-09-01T12:59:47.890 回答