ZED相机的使用

下面简要说明一下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能实现的东西很多,支持的平台也多,具体还是参考官方文档

有缘更新。。。。

猜你喜欢

转载自blog.csdn.net/qq_34935373/article/details/111769503