• 大小: 8KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: C/C++
  • 标签: OpenCV  MatLab  

资源简介

生成相机标定棋盘的c++程序,棋盘格大小为25mm,生成后直接就可以打印使用了。

资源截图

代码片段和文件信息

/*
获取kinect原始图片序列并依时间保存,以100张为单位,获取的图片可用于kinect标定
*/

#include “kinect.h“
#include 
#include   
#include   
#include 
#include 

using namespace cv;
using namespace std;

// 安全释放指针
template
inline void SafeRelease(Interface *& pInterfaceToRelease)
{
if (pInterfaceToRelease != NULL)
{
pInterfaceToRelease->Release();
pInterfaceToRelease = NULL;
}
}

// 保存所需数据的结构体
struct eachframe
{
string depth_name;
string rgb_name;
cv::Mat tmp_itD1;
cv::Mat tmp_itRGB1;
};

int main()
{
// 创建保存目录
CreateDirectory(L“.//images“ NULL);

// 获取Kinect设备
IKinectSensor* m_pKinectSensor;
ICoordinateMapper*      m_pCoordinateMapper;
CameraIntrinsics* m_pCameraIntrinsics = new CameraIntrinsics();
HRESULT hr;
hr = GetDefaultKinectSensor(&m_pKinectSensor);

if (FAILED(hr))
{
return hr;
}

IMultiSourceframeReader* m_pMultiframeReader;
IBodyframeSource* m_pBodyframeSource;
IBodyframeReader* m_pBodyframeReader;
if (m_pKinectSensor)
{
hr = m_pKinectSensor->Open();
Sleep(1000);
if (SUCCEEDED(hr))
{
m_pKinectSensor->get_BodyframeSource(&m_pBodyframeSource);
// 获取多数据源到读取器  
hr = m_pKinectSensor->OpenMultiSourceframeReader(
frameSourceTypes::frameSourceTypes_Color |
frameSourceTypes::frameSourceTypes_Infrared |
frameSourceTypes::frameSourceTypes_Depth
&m_pMultiframeReader);
}
}

if (SUCCEEDED(hr))
{
hr = m_pKinectSensor->get_CoordinateMapper(&m_pCoordinateMapper);
}

if (!m_pKinectSensor || FAILED(hr))
{
return E_FAIL;
}

// 获取深度相机内参并打印
if (SUCCEEDED(hr))
{
hr = m_pCoordinateMapper->GetDepthCameraIntrinsics(m_pCameraIntrinsics);
}
if (SUCCEEDED(hr))
{
cout << “FocalLengthX : “ << m_pCameraIntrinsics->FocalLengthX << endl;
cout << “FocalLengthY : “ << m_pCameraIntrinsics->FocalLengthY << endl;
cout << “PrincipalPointX : “ << m_pCameraIntrinsics->PrincipalPointX << endl;
cout << “PrincipalPointY : “ << m_pCameraIntrinsics->PrincipalPointY << endl;
cout << “RadialDistortionFourthOrder : “ << m_pCameraIntrinsics->RadialDistortionFourthOrder << endl;
cout << “RadialDistortionSecondOrder : “ << m_pCameraIntrinsics->RadialDistortionSecondOrder << endl;
cout << “RadialDistortionSixthOrder : “ << m_pCameraIntrinsics->RadialDistortionSixthOrder << endl;
}


// 三个数据帧及引用
IDepthframeReference* m_pDepthframeReference;
IColorframeReference* m_pColorframeReference;
IInfraredframeReference* m_pInfraredframeReference;
IInfraredframe* m_pInfraredframe;
IDepthframe* m_pDepthframe;
IColorframe* m_pColorframe;
// 四个个图片格式
Mat i_rgb(1080 1920 CV_8UC4);      //注意:这里必须为4通道的图,Kinect的数据只能以Bgra格式传出
Mat i_depth(424 512 CV_8UC1);
Mat i_depth_raw(424 512 CV_16UC1);
Mat i_ir(424 512 CV_16UC1);

UINT16 *depthData = new UINT16[424 * 512];
UINT16 *irData = new UINT16[424 * 512];
IMultiSourceframe*

评论

共有 条评论