如何在同一个窗口中并排显示2个网络摄像头视频以获得立体声效果

How to display 2 webcam videos side by side in the same window for stereo?

本文关键字:视频 摄像头 立体声 网络 2个 同一个 窗口 显示      更新时间:2023-10-16

我想使用3D头戴式显示器(HMD)为第一人称视角(FPV)创建一个立体声视频馈送。如何在同一视频中显示两个网络摄像头视频,然后使用箭头键调整它们的位置?

并排显示两个视频非常简单-只需从两个相机获取帧并将结果复制到一个图像中(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。你可以在按下一些键后更改它们。更多信息-[由于链接断开而更新到web存档:]http://web.archive.org/web/20130619174223/http://bsd-noobz.com/opencv-guide/45-单键盘