C++读取realsense视频和手眼标定(opencv)

这段时间在用realsense,前期走了很多弯路,把代码写下来,方便自己以后回顾,也方便大家对照。

首先要说明,我用的是realsense D435,驱动是SDK2.0,所以有些写法和以前的是不一样的,这个之前也一直让我很头疼,明明大家都是一样的语法,到我这儿就不行,大家以后用realsense一定要先看清楚。

以下是代码,工具:vs2017+opencv3.4.5

#include 
#include
#include 
#include 
#include 
#include 
#include 
using namespace std;
using namespace cv;
int main()
{
	rs2::pipeline pipe;     //Contruct a pipeline which abstracts the device
	rs2::config cfg;    //Create a configuration for configuring the pipeline with a non default profile
	cfg.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_BGR8, 30);
	cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30);
	rs2::pipeline_profile selection = pipe.start(cfg);
	bool stop = false;
	while (!stop)
	{
		rs2::frameset frames;
		frames = pipe.wait_for_frames();
		//Get each frame
		auto color_frame = frames.get_color_frame();
		auto depth_frame = frames.get_depth_frame();
		//create cv::Mat from rs2::frame
		Mat color(Size(640, 480), CV_8UC3, (void*)color_frame.get_data(), Mat::AUTO_STEP);
		imshow("Display Image", color);
		if (waitKey(10) >= 0)
			stop = true;
	}
	return 0;
}

realsense是用来做手眼标定的,但是网上都是说了原理,没有代码,有也是用的halcon的库,穷学生表示买不起。好不容易找到一个,还是用python写的,可怜我python-C++的realsense连接一直有问题,只能一边看一边改成C++的,而且opencv里面的aruco的库一直找不到,所以只能用最笨的办法了(看到文章的大佬如果有知道aruco的库怎么用的,请联系我)。

手眼标定的代码还有一些地方需要优化,过两天再放上来吧。

你可能感兴趣的:(realsense)