ZED stereo camera开发入门教程(2)
来源:互联网 发布:淘宝招工 编辑:程序博客网 时间:2024/06/05 08:47
教程2:图像捕获
原教程及代码链接:https://github.com/wangjhit/zedStereoCamera_tutorials/tree/master/tutorial%202%20-%20image%20capture
本教程将介绍如何捕获ZED摄像机的左图像。程序将循环,直到我们成功地抓住了50张图像。我们假设您已阅读教程1并成功打开了ZED。
入门
- 首先,在stereolabs.com上下载最新版本的ZED SDK 。
- 有关更多信息,请阅读ZED API文档。
先决条件
- Windows 7 64位或更高版本,Ubuntu 16.04
- ZED SDK及其依赖项(CUDA)
构建程序
构建Windows
- 在源文件夹中创建一个“build”文件夹
- 打开cmake-gui并选择源和构建文件夹
- 生成Visual Studio Win64解决方案
- 打开生成的解决方案并将配置更改为 Release
- 构建解决方案
构建Linux
在示例目录中打开一个终端,并执行以下命令:
mkdir buildcd buildcmake ..make
代码概述
创建一个相机
与上一个教程一样,我们创建,配置和打开ZED。我们在这里展示如何设置分辨率和帧率。我们希望在这个例子中以30 fps(默认)在H1080中工作。// Create a ZED camera objectCamera zed;// Set configuration parametersInitParameters init_params;init_params.camera_resolution = RESOLUTION_HD1080; // Use HD1080 video modeinit_params.camera_fps = 30; // Set fps at 30// Open the cameraERROR_CODE err = zed.open(init_params);if (err != SUCCESS) exit(-1);
捕获数据
现在ZED打开了,我们现在可以捕捉到它的图像。我们创建一个捕获50个图像并退出的循环。要捕获图像并进行处理,您需要调用Camera :: grab()函数。此函数也具有运行时参数,但在本教程中我们将其保留为默认值。每次你想要一个新的图像,你需要调用这个功能。如果grab()返回SUCCESS,则新的图像已被捕获,现在可用。否则,您可以检查grab()的状态,这将告诉您是否没有新的帧可用(取决于摄像机的帧率)或发生错误。
// Grab an imageif (zed.grab() == SUCCESS) {// A new image is available if grab() returns SUCCESS}
抓取完成后,您可以获得ZED SDK提供的所有数据。在本教程中,我们要检索左图像及其时间戳。为此,我们使用the Camera::retrieveImage()和Camera::getCameraTimestamp()功能。zed.retrieveImage(image,VIEW_LEFT); // Get the left imageunsigned long long timestamp = zed.getCameraTimestamp(); // Get the timestamp of the imageprintf("Image resolution: %d x %d || Image timestamp: %llu\n", image.getWidth(), image.getHeight(), timestamp);
retrieveImage()取一个sl :: Mat作为参数,还有一个VIEW模式。我们首先需要在启动循环之前创建Mat。请注意,创建Mat不会分配其内存,因此第一个retrieveImage()将为我们自动分配其内存。由于我们想要在捕获50张图像时停止循环,所以当抓取成功时,我们只会增加计数器。
// Capture 50 frames and stopint i = 0;sl::Mat image;while (i < 50) { // Grab an image if (zed.grab() == SUCCESS) { // A new image is available if grab() returns SUCCESS zed.retrieveImage(image, VIEW_LEFT); // Get the left image unsigned long long timestamp = zed.getCameraTimestamp(); // Get the timestamp at the time the image was captured printf("Image resolution: %d x %d || Image timestamp: %llu\n", image.getWidth(), image.getHeight(), timestamp); i++; }}
注意:图像时间戳以纳秒为单位给出。您可以比较两个grab()之间的时间戳:它应该接近帧速率时间,如果没有丢帧。
现在我们拍摄了50张图像,我们可以关闭相机并退出程序。
// Close the camerazed.close();return 0;
这就是它!现在您可以转到下一个教程,了解如何从ZED摄像机获得深度。
您可以在main.cpp中找到该样本的完整源代码,位于同一文件夹中
阅读全文
0 0
- ZED stereo camera开发入门教程(2)
- ZED stereo camera开发入门教程(1)
- ZED stereo camera开发入门教程(3)
- ZED stereo camera开发入门教程(4)
- 双显卡笔记本(Intel 集显&Nvidia GEFORCE 920M显卡)配置ZED stereo camera
- 在笔记本上安装CUDA8 & ZED Stereo Camera
- ZED stereo安装及使用相关
- Ubuntu16.04 + ZED Camera 调试
- bumblebee stereo camera调试一些小tip
- Zynq X7CZ020 ZED开发板有关资料
- HOW TO SETUP BUMBLEBEE STEREO CAMERA UNDER LINUX
- HOW TO SETUP BUMBLEBEE STEREO CAMERA UNDER LINUX
- 立体视觉匹配(Stereo Matching/stereo correspondence)
- ZED Board从入门到精通(三):从传统ARM开发到PS开发的转变
- ZED-Board从入门到精通(四):从传统FPGA开发到PL开发的转变
- 【开发手记一】老生常谈:简简单单配置ZED板开发环境
- macOS开发入门教程 : Part 2
- 黑莓开发学习(入门教程)
- IPython常用魔法方法
- 迭代求解最优化问题——梯度下降、牛顿法
- 构建机器学习项目(二)- ML strategy(2)
- Python--day1 Python的安装
- Mybatis的基本使用实例
- ZED stereo camera开发入门教程(2)
- 695. Max Area of Island
- 257. Binary Tree Paths
- 流水账笔记:PE文件格式(关于dump)
- ZED stereo camera开发入门教程(3)
- 图像空间域和频域的理解
- Java Swing实现仿win7计算器
- Xcode9学习笔记6
- SimGAN-Captcha代码阅读与复现