下面简要说明一下ZED双目相机的使用
1.开发环境搭建
首先zed的相机必须要nvidia显卡支持,没有的同学可以洗洗睡了,或者你可以拿来当普通相机用。
首先安装cuda,再去zed官网下载对应cuda版本的sdk,sdk安装过程中会自动添加环境变量。
2.简单开发
这里以C++(VS2019)为例,官网给的是用CMakeLists.txt生成的解决方案,我这里就直接自己添加了,本质其实一样。
首先新建一个项目,在属性中添加附加包含目录
C:\Program Files (x86)\ZED SDK\dependencies\glew-1.12.0\include
C:\Program Files (x86)\ZED SDK\dependencies\freeglut_2.8\include
C:\develop\opencv\opencv\build\include\opencv2
C:\develop\opencv\opencv\build\include
C:\Program Files (x86)\ZED SDK\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\include
添加附加库目录
C:\Program Files (x86)\ZED SDK\dependencies\glew-1.12.0\x64
C:\Program Files (x86)\ZED SDK\dependencies\freeglut_2.8\x64
C:\develop\opencv\opencv\build\x64\vc15\lib
C:\Program Files (x86)\ZED SDK\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64
添加附加依赖项
opencv_world430d.lib
sl_zed64.lib
cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
示例代码
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <sl/Camera.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace sl;
int main(int argc, char** argv) {
//定义相机
Camera zed;
//初始化相机
InitParameters init_p;
init_p.camera_resolution = RESOLUTION::HD720;
init_p.camera_fps = 25;
init_p.depth_mode = DEPTH_MODE::NONE;
ERROR_CODE open_state = zed.open(init_p);
if (open_state != ERROR_CODE::SUCCESS){
cout << "fail open" << endl;
return -1;
}
//获取相机信息
auto camera_info = zed.getCameraInformation();
int new_width = camera_info.camera_configuration.resolution.width;
int new_height = camera_info.camera_configuration.resolution.height;
Mat zed_img;
cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
while (!(_kbhit() && _getch() == 0x1b))
{
if (zed.grab() == ERROR_CODE::SUCCESS) {
//获取图像
zed.retrieveImage(zed_img, VIEW::RIGHT);
cv::Mat cv_img = cv::Mat((int)zed_img.getHeight(), (int)zed_img.getWidth(), CV_8UC4, zed_img.getPtr<sl::uchar1>(sl::MEM::CPU));
cv::imshow("image", cv_img);
cv::waitKey(10);
}
}
zed.close();
return 0;
}
zed能实现的东西很多,支持的平台也多,具体还是参考官方文档
有缘更新。。。。